Eingabe in Text- und Kombinationsfelder vereinfachen

Manchmal nervt es einfach, Daten in Textfelder einzugeben, aber in vielen Fällen lässt sich dies nicht ändern. Wenn das Feld numerische Informationen enthält, gibt es aber durchaus Möglichkeiten: Sie können es dann beispielsweise so programmieren, dass der Benutzer den enthaltenen Wert mit den Cursortasten erhöht oder vermindert.

Eingabevereinfachung

Die Eingabe von Daten erfolgt leider immer noch nicht durch Gedankenkraft oder über ein mit dem Gehirn verbundenes USB-Kabel. Bis es so weit ist, sollten Sie Ihren Benutzern diese Arbeit zumindest vereinfachen – einige Anregungen finden Sie in diesem Artikel. Im Einzelnen sieht das folgendermaßen aus, wobei die Cursortasten jedes Mal eine entscheidende Rolle spielen:

Die ersten beiden Beispiele zeigen, wie Sie die Eingabe von Datumsangaben mit verschiedenen Tastenkombinationen erleichtern. üblicherweise gibt man Datumsangaben wie ganz normalen Text ein, manche Anwendungen bieten dazu alternativ ein spezielles Steuerelement an, mit dem sich das Datum per Maus zusammenklicken lässt.

Der Nachteil dieser Lösungen ist aber in der Regel, dass der Benutzer dazu die Maus verwenden muss. Wer schnell arbeiten möchte, sollte sich allerdings auf die Tastatur konzentrieren – das Greifen der Maus, das Anklicken der Schaltfläche zum öffnen des Steuerelements zur Datumseingabe und die Datumseingabe selbst nehmen offensichtlich nicht weniger Zeit in Anspruch als das Eingeben des Datums mit der Tastatur.

Die erste Variante zur Eingabe von Datumsangaben verwendet verschiedene Tastenkombinationen, um die Teile des Datums (Tag, Monat, Jahr) zu ändern.

Die Schaltflächen Cursor nach oben und Cursor nach unten sind beispielsweise für das ändern des Tages verantwortlich, die Monate und Jahre passt man mit den gleichen Schaltflächen bei gleichzeitig gedrückter Strg– und Alt-Taste an.

Die zweite Variante kommt nur mit den beiden Tasten Cursor nach oben und Cursor nach unten aus. Um die verschiedenen Datumselemente zu verändern, positioniert man die Einfügemarke zunächst auf dem entsprechenden Datumsteil und passt diesen dann mit den Cursortasten an.

Auch Zahlen lassen sich in vielen Fällen leichter mit Cursortasten als mit den Zahlentasten selbst verändern.

Das dritte Beispiel zeigt daher, wie Sie die in einem Textfeld enthaltenen Zahlen per Cursortaste nach oben beziehungsweise nach unten korrigieren.

Zuletzt noch ein Beispiel für den Einsatz von Kombinationsfeldern: Wer dort einen neuen Eintrag auswählen möchte, muss dies erst entweder mit der Maus oder durch eine Tastenkombination (entweder F4 oder Alt + Cursor nach unten) erledigen. Viel schöner wäre es doch, wenn man die in unmittelbarer Umgebung des aktuell ausgewählten Eintrags befindlichen Elemente ganz einfach mit den Tasten Umschalt + Strg + Alt + Cursor nach oben beziehungsweise Cursor nach unten auswählen könnte – und zwar ohne das Aufklappen des Kombinationsfeldes.

Nachteile

Bei all den nachfolgend vorgestellten Beispielen ist zu berücksichtigen, dass meist die Cursortasten zum Einsatz kommen. Diese dienen üblicherweise zum Wechseln des aktuell markierten Steuerelements.

Dies wird aber ohnehin selbst in den Dialogen der Office-Anwendungen und in Access-Formularen unterschiedlich gehandhabt (Erstere erlauben beispielsweise nicht das Verlassen von Kombinationsfeldern per Cursortaste, Letztere schon).

Wer kann, sollte also am besten die Vorgehensweise seiner Benutzer studieren und gegebenenfalls alternative Steuermöglichkeiten vorsehen, die der Benutzer per Option einstellen kann.

Grundlegendes

Die wichtigste Technik dieses Beitrags ist das Abfangen von Benutzereingaben, und zwar der Cursortasten. Sie müssen erkennen, wann der Benutzer in den entsprechenden Steuerelementen die Cursor nach oben und Cursor nach unten-Tasten und ihre Kombinationen mit der Umschalt-, der Strg– und der Alt-Taste betätigt. Dabei hilft die Ereignisprozedur Bei Taste ab, die jedes Steuerelement bereitstellt. Die passende Ereignisprozedur stellt zwei Parameter zur Verfügung:

  • KeyCode: Gibt den Zahlencode der gedrückten Taste zurück. Für die Cursortasten sind dies beispielsweise die Werte 37 (nach links), 38 (nach oben), 39 (nach rechts) und 40 (nach unten). Man vereinfacht sich das Leben, wenn man die passenden VB-Konstanten verwendet, die beispielsweise der Objektkatalog offenbart (s. Abb. 1). Sie können aber auch einfach den Wert von KeyCode per Debug.Print ausgeben lassen, wenn Sie den Zahlenwert einer Taste erfahren möchten.
  • Shift: Gibt an, ob eine der Tasten Umschalt (1), Strg (2) oder Alt (4) gedrückt wurde; ist dies nicht der Fall, lautet der Wert 0. Kombinationen der Tasten erkennt man an der Summe der entsprechenden Werte. Der Wert 7 würde beispielsweise bedeuten, dass der Benutzer alle drei Tasten gleichzeitig gedrückt hätte (1+2+4). Auch hier gibt es Konstanten: acShiftMask, acCtrlMask und acAltMask.
abb001.tif

Abb. 1: Der Objektkatalog liefert bei Bedarf die VB-Konstanten für die KeyCode-Werte.

Wenn Sie nun möchten, dass etwas Spezielles passiert, wenn der Benutzer innerhalb eines Textfeldes die Cursor nach unten-Taste drückt, verwenden Sie etwa die folgende Routine:

Private Sub txtBeispiel_KeyDown(KeyCode _
As Integer, Shift As Integer) If KeyCode = vbKeyDown Then 'Do something KeyCode = 0 End If End Sub

Sie fragen also über den Parameter KeyCode ab, ob der Benutzer die Cursor nach unten-Taste betätigt hat, und lassen in diesem Fall den gewünschten Code ausführen.

Wichtig ist, dass Sie dem Parameter KeyCode im Anschluss den Wert 0 zuweisen, damit Access auch nur die hier angegebene Aktion und nicht die eigentliche durch das Betätigen der Taste ausgelöste Funktion aufruft.

Natürlich kann dies auch gewünscht sein – in diesem Fall lassen Sie die Zeile einfach weg.

Tastenvorschau

Wie die einzelnen Steuerelemente besitzt auch das Formular ein Bei Taste ab-Ereignis. Mit der Eigenschaft Tastenvorschau legen Sie fest, ob dieses ausgeführt werden soll. Ist diese Eigenschaft auf Ja eingestellt und enthalten sowohl das Formular als auch ein Steuerelement ein Bei Taste ab-Ereignis, wird das des Formulars zuerst ausgeführt. Beachten Sie, dass ein Einstellen von KeyCode auf den Wert 0 sich auch auf das nachfolgend aufgerufene Ereignis des Steuerelements auswirkt.

Textfeldinhalt beeinflussen

Grundsätzlich gibt man Texte in Textfelder ein, indem man den Fokus auf das Textfeld setzt und dann mit der Tastatur den passenden Wert eintippt. Gegebenenfalls kann man dort natürlich auch Informationen aus der Zwischenablage einfügen.

Wenn das Feld schon einen Wert enthält, muss man diesen erst noch löschen, bevor man den neuen Wert einträgt – dies kann man sich erleichtern, indem man dafür sorgt, dass beim Eintreten in ein Feld direkt der komplette Inhalt markiert wird.

Die Eingabe des ersten neuen Zeichens führt dann dazu, dass der vorhandene Inhalt gelöscht wird (mehr dazu im Beitrag Verhalten beim Feldeintritt in der kommenden Ausgabe, Shortlink 540).

Datumseingabe vereinfachen, Variante 1

Die Eingabe von Datumsangaben können Sie sich bereits mit den richtigen Tastenkombinationen erleichtern (s. Abb. 2).

abb002.tif

Abb. 2: Die erste Variante der vereinfachten Datumseingabe

abb003.tif

Abb. 2: Nur mit den Cursortasten ist die Datumseingabe noch intuitiver.

So fügen Strg + Umschalt + , das Datum und Strg + Umschalt + . die aktuelle Uhrzeit hinzu. Diese Tastenkombinationen kennt aber in der Regel kein normaler Benutzer. Und das Problem ist, dass er auch sämtliche Tastenkombinationen, die Sie für Ihre Steuerelemente vorsehen, nicht kennt. Es gibt also zwei Möglichkeiten:

  • Der Benutzer gibt die Daten wie üblich ein.
  • Sie teilen dem Benutzer die Tastenkombinationen mit, die ihm die Arbeit bei der Dateneingabe erleichtern.

Letzteres setzt voraus, dass der Benutzer überhaupt von seiner gewohnten Arbeitsweise abweichen möchte, daher können Sie ihm die Vereinfachung natürlich nur anbieten. Das erledigen Sie beispielsweise durch einen entsprechenden Steuerelement-TipText. Bevor Sie das tun, schauen Sie sich allerdings erstmal an, wie man die Datumseingabe überhaupt vereinfachen kann.

Die Routine, die hier durch das Bei Taste Ab-Ereignis ausgelöst wird, sieht wie in Listing 1 aus. Sie prüft zunächst, welchen Wert Shift liefert, und dann den jeweiligen KeyCode. Zuvor prüft die Routine allerdings noch, ob das Textfeld überhaupt einen Wert enthält, und fügt, wenn das nicht der Fall ist, das aktuelle Datum ein. Ist ein Datum vorhanden, wirken sich einige Tastenkombinationen wie folgt aus:

Listing 1: Anpassen des Datums in einem Textfeld nur mit Strg, Alt, Cursor nach oben und Cursor nach unten.

Private Sub txtDatum_KeyDown(KeyCode As Integer, Shift As Integer)

Dim txt As Access.TextBox

If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then

Set txt = Me!txtDatum

If Len(Nz(txt.Text)) = 0 Then

txt.Text = Date

Else

Select Case Shift

Case 0

Select Case KeyCode

Case vbKeyUp

txt.Text = DateAdd("d", 1, txt.Text)

Case vbKeyDown

txt.Text = DateAdd("d", -1, txt.Text)

End Select

Case acCtrlMask

Select Case KeyCode

Case vbKeyUp

txt.Text = DateAdd("m", 1, txt.Text)

Case vbKeyDown

txt.Text = DateAdd("m", -1, txt.Text)

End Select

Case acAltMask

Select Case KeyCode

Case vbKeyUp

txt.Text = DateAdd("yyyy", 1, txt.Text)

Case vbKeyDown

txt.Text = DateAdd("yyyy", -1, txt.Text)

&

  • Cursor nach oben: nächster Tag
  • Cursor nach unten: vorheriger Tag
  • Strg + Cursor nach oben: nächster Monat
  • Strg + Cursor nach unten: vorheriger Monat
  • Alt + Cursor nach oben: nächstes Jahr
  • Alt + Cursor nach unten: vorheriges Jahr

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar