Sie kennen das von den Dialogen zur Eingabe von Registrierungsschlüsseln: Sie geben den ersten Fünferpack des Schlüssels ein und der Fokus springt dann automatisch zum folgenden Feld, wo Sie den nächsten Fünferpack eingeben können. Dieses Verhalten wollen wir einmal nachbilden. Dieser Beitrag zeigt, wie das durch den geschickten Einsatz von Ereignisprozeduren leicht gelingt.
Formular erstellen
Als Erstes erstellen wir ein Formular namens frmKeys, dem wir die fünf Textfelder txtKey1, txtKey2, txtKey3, txtKey4 und txtKey5 hinzufügen. Dazwischen platzieren wir jeweils ein Minuszeichen (s. Bild 1).
Bild 1: Das Formular frmKeys in der Entwurfsansicht
Vorgaben
Was geschieht nun Optimalerweise gibt der Benutzer nacheinander die 25 Zeichen des Keys ein. Dabei wollen wir dafür sorgen, dass immer nach Eingabe von fünf Zeichen ein automatischer Sprung zum nächsten Textfeld erfolgt. Das erledigen wir etwa für das erste Textfeld mit der Prozedur, die durch das Ereignis Bei Taste auf ausgelöst wird und die wir wie folgt füllen:
Private Sub txtKey1_KeyUp(KeyCode As Integer, _ Shift As Integer) If Len(Me!txtKey1.Text) = 5 And _ Me!txtKey1.SelStart = 5 Then Me!txtKey2.SetFocus End If End Sub
Wenn Sie nun fünf Zeichen in das erste Textfeld eingeben, landet die Einfügemarke wie in Bild 2 im zweiten Textfeld. Die If…Then-Bedingung in der Prozedur prüft, ob die Anzahl der Zeichen im Textfeld txtKey1 dem Wert 5 entspricht und ob sich die Einfügemarke an der letzten Position befindet. In diesem Fall wird der Fokus auf das zweite Textfeld txtKey2 verschoben.