Ist in der Beschriftung einer CheckBox oder eines CommandButtons
eine Zugriffstaste festgelegt (siehe "Zugriff
auf Umwegen"), wird beim Betätigen der Zugriffstaste die
Funktion des Steuerelements direkt ausgelöst: Das Häkchen der
CheckBox wird gesetzt bzw. gelöscht oder die Schaltfläche wird
betätigt. In beiden Fällen wird dabei das Click-Ereignis
ausgelöst.
Wenn jedoch das Betätigen der Zugriffstaste nur den Fokus zu der
CheckBox oder dem CommandButton bewegen soll (etwa wie bei der
TextBox und einem zur Definition der Zugriffstaste vorgesetzten
Label), wird ein kleiner Trick notwendig.
Dieser besteht darin, einfach eine zweite CheckBox (für
CommandButtons gilt das im Folgenden gesagte genau so) mit der
gleichen Beschriftung, also auch der gleichen
Zugriffstasten-Markierung, hinter der eigentlichen CheckBox zu
verstecken. Die TabIndex-Nummer dieser verdeckten CheckBox wird auf
die Nummer der sichtbaren CheckBox gesetzt - deren TabIndex ist
daraufhin um 1 höher geworden. Weiterhin wird die
TabStop-Eigenschaft der sichtbaren (ursprünglichen) CheckBox auf
False gesetzt.
Damit fällt die sichtbare CheckBox allerdings aus der
Tab-Reihenfolge heraus, da beim Betätigen der Tab-Taste
(Tab-Reihenfolge vorwärts) bzw. Umschalt-Tab-Kombination
(Tab-Reihenfolge rückwärts) die verdeckte CheckBox angesprungen
wird. Der eigentliche Trick besteht nun darin, in deren
GotFocus-Ereignis dafür zu sorgen, dass die sichtbare CheckBox den
Fokus erhält.
Private Sub chkVerdeckt_GotFocus()
chkSichtbar.SetFocus
End Sub
Damit beim erneuten "Tabben" jedoch nicht wieder die
verdeckte CheckBox angesprungen und damit der Fokus erneut auf die
sichtbare CheckBox gesetzt würde, wird die verdeckte CheckBox so
lange gesperrt, wie die sichtbare den Fokus inne hat.
Private Sub chkSichtbar_GotFocus()
chkVerdeckt.Enabled = False
End Sub
Private Sub chkSichtbar_LostFocus()
chkVerdeckt.Enabled = True
End Sub
Da die verdeckte CheckBox in der Steuerelement-Reihenfolge vor
der sichtbaren liegt, wird beim ersten Betätigen der Zugriffstaste
deren Click-Ereignis ausgelöst. Dort wird dann, wie gewünscht,
lediglich der Fokus auf die sichtbare CheckBox gesetzt.
Private Sub chkVerdeckt_Click()
chkSichtbar.SetFocus
End Sub
Da dadurch auch wieder das GotFocus-Ereignis der sichtbaren
CheckBox ausgelöst wird, wird die verdeckte CheckBox wie gehabt
gesperrt - das nächste Betätigen der Zugriffstaste löst dann wie
gewohnt die Funktion der CheckBox aus - das Häkchen wird gesetzt
oder gelöscht.
|