vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Ereignisse indizierter Controls abfangen 
Autor: Reinski
Datum: 20.09.03 19:50

Hallo zusammen,

ich bräuchte mal einen fachmännischen Rat... ;)

In einer eigenen Klasse möchte ich die Events von Controls (zB. einer TextBox) abfangen.
Diese Textbox wird zur Laufzeit zugewiesen (über eine entsprechende Eigenschaft der Klasse).
Soweit so gut, das kriege ich auch ohne Probleme hin.

Jetzt entstammt die Textbox allerdings einem Textbox-Feld, d.h. sie trägt also einen Index, und plötzlich funktioniert es nicht mehr.

Der Einfachheit halber liefere ich hier mal den Beispielcode für eine Klasse, deren Value-Eigenschaft einfach immer den Wert einer Textbox annehmen soll, die ihr zugewiesen ist:

Zuerst die Klasse (ClassValue):
Option Explicit
Private mvarValue As String
Private WithEvents Ctrl As TextBox
Public Event ValueChanged()
 
Public Property Get Value() As String
    Value = mvarValue
End Property
 
Public Property Set TextBox(TxtBox As TextBox)
    Set Ctrl = TxtBox
    ctrl_Change
End Property
 
Private Sub ctrl_Change()  'das ist die Ereignisprozedur für die Textbox
    mvarValue = Ctrl.Text
    RaiseEvent ValueChanged
End Sub
Dann die funktionierende Implementierung in einem Form, welches eine Textbox 'Text1' und ein Label namens 'ValLabel' enthält:
Option Explicit
Dim WithEvents clVal As ClassValue
 
Private Sub Form_Load()
    Set clVal = New ClassValue
    Set clVal.TextBox = Text1
End Sub
 
Private Sub clVal_ValueChanged()
    ValLabel.Caption = clVal.Value
End Sub
Beim Load-Ereignis des Forms wird die Textbox dem Objekt clVal zugewiesen, worauf hin es sofort den Text-Wert der Textbox annimmt und das ValueChanged Ereignis auslöst, welches auf der Form wiederum das Label aktualisiert.
Wird in der Textbox eine Eingabe getätigt, dann ändert sich der Wert (Value) des Objektes clVal (über die Ereignisprozedur in der Klasse), was auch sofort über das ValueChanged Ereignis in der Form sichtbar wird.

Sobald ich auf der Form aber ein Feld mit Textboxen habe (Index 0 bis ...) und die Zuweisung entsprechend anpasse, zB.
Private Sub Form_Load()
    Set clVal = New ClassValue
    Set clVal.TextBox = Text1(0)
End Sub
dann funzt es nicht mehr...

Kann mir da jemand weiterhelfen??? Wie muss ich meine Ereignisvariable deklarieren, damit ich die Ereignisse abfangen kann??
Bin ziemlich verzweifelt und würde mich freuen, wenn mir jemand antworten könnte (ich hab zu dem Thema nur ein uralt-Posting ohne Antwort gefunden)...
Gruß!

reinski

Immer noch auf der Suche nach dem "Tu's trotzdem"-Button...

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Ereignisse indizierter Controls abfangen572Reinski20.09.03 19:50
Re: Ereignisse indizierter Controls abfangen251ModeratorDieter21.09.03 09:51
trotzdem Danke262Reinski21.09.03 13:24

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel