GotFocus Ereignis, also das Ereignis, wenn ein Objekt
(Textbox,Listbox,Commandbutton usw.) das aktive Objekt wird ( es ist markiert ). Diesem
Ereignis kann man nun wie jedem anderen eine bestimmte Aktion zuordnen.
(Also wenn beispielsweise eine Textbox den Focus erhält, so soll eine Msgbox erscheinen,
die Informationen zur Textbox ausgibt.)
Das alles ist kein Problem, was aber, wenn während der Programmausführung bestimmte
Aktionen mit der Textbox geschehen und so durch das Programm selbst, dieses Objekt als
aktives markiert wird. Dann lößt es Ihr GotFocus-Ereignis aus. Sicher weniger schön.
Sie bekommen aber hier nun eine Möglichkeit abzufragen, wie den das Objekt aktiv gesetzt
wurde und können so auswählen, ob Ihr Ereignis starten soll oder nicht.
Der Tipp stammt von Werner.Almesberger, der darauf hinweist, daß er nicht der geistige
Vater dieses Tipps ist, sondern das er ihn aus einer alten Zeitschrift ausgegraben hat.
Unser Dank ist Dir trotzdem gewiß.
Wenn Sie also diese Funktionalität in Ihrem Projekt benötigen, dann fügen Sie zuerst in
den Abschnitt
General/Declarations folgenden Funktionsaufruf ein.
Declare Function GetAsyncKeyState Lib "User" (ByVal vKey As Integer) As Integer
An den Anfang des GotFocus-Ereignisses des jeweiligen Objektes stellen Sie folgende
Prüfung.
If Not GetAsyncKeyState(&H1) = &H8001 Then Exit Sub '&H1=Linke Maustaste
If Not GetAsyncKeyState(&H9) = &H8001 Then Exit Sub '&H9=TAB-Taste
If Not GetAsyncKeyState(&H12) = &H8001 Then Exit Sub'&H12=Tastenkombination
1. Wurde das Objekt nicht mit der linken Maustaste aktiv gesetzt, dann beende das Ereignis
2. Wurde das Objekt nicht mit der TAB-Taste aktiv gesetzt, dann beende das Ereignis
3. Wurde das Objekt nicht über eine spezielle Tastenkombi aktiv gesetzt, dann beende das
Ereignis
Sie können nun variieren, je nachdem wie es für Ihr Projekt günstig erscheint, so kommt
Ihnen das Programm nicht mehr in die Quere, wenn es von selbst ein Objekt aktiv setzt. |