Rubrik: Controls · TextBox & RichTextBox | VB-Versionen: VB4, VB5, VB6 | 17.09.04 |
Tastatureingabe für Textboxen einschränken Mit der beiliegenden Funktion lassen sich die für die Eingabe in einer Textbox erlaubten Zeichen sehr einfach und schnell festlegen. | ||
Autor: Hermann Röttger | Bewertung: | Views: 22.142 |
www.direct-solutions-software.com | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Mit der beiliegenden Funktion lassen sich die für die Eingabe in einer Textbox erlaubten Zeichen sehr einfach und schnell festlegen, auch wenn die zulässigen Tastaturbereiche in der Codetabelle nicht zusammenliegen. Zusätzlich kann über optionale Parameter bei der Funktionsübergabe festgelegt werden, ob im ToolTip der Textbox die jeweils erlaubten Zeichen angezeigt werden sollen bzw. eine Meldung ausgegeben werden soll, falls eine ungültige Taste gedrückt wurde. Die für die Eingabe nützlichen Tasten "Backspace" und die "Eingabetaste" werden immer zugelassen.
Die Funktion bietet bereits die folgenden Vorgabemöglichkeiten:
- Nur Text A-Z a-z zulassen
- Nur Zahlen zulassen
- Nur Text A-Z a-z und Zahlen zulassen
- Text, Zahlen und einige Sonderzeichen zulassen
- gültige Zeichen im ToolTipText der Textbox anzeigen/verbergen
- Meldung anzeigen/verbergen, falls eine ungültige Taste gedrückt wurde
Die zulässigen Tasten können sehr einfach geändert werden, indem der String KeyStr_L der Funktion im Modul entsprechend angepasst wird. Die in diesem String enthaltenen Zeichen repräsentieren die jeweils gültigen Zeichen.
Die Funktion könnte sehr einfach erweitert werden (z.B. auf Prüfung von Nachkommazahlen mit benutzerdefinierten Nachkommastellen oder auf Prüfung der Zahlengrösse bzw Textlänge).
Fügen Sie dem Projekt ein neues Modul mit folgender Funktion hinzu:
' Quellcode für Modul Option Explicit ' Vorgaben für den zu prüfenden Tastatur-Bereich Public Enum KeyTyp NurZahlen = 0 NurText = 1 TextUndZahlen = 2 TextZahlenSonderzeichen = 3 End Enum
' Funktionsaufruf im KEYPRESS-Ereigniss einer Textbox ' Beispiel: ' KeyascII = KeyCheck(KeyascII, TextBoxName, NurZahlen, False, False) ' KeyCode: Enthält bei Funktionsaufruf den ASCII-Code der gedrückten Taste ' TxtBox: Name der Textbox ' EingabeTyp: Vorgaben für den zu prüfenden Tastatur-Bereich ' ToolTipTxt: Falls True, werden im ToolTopText der Textbox die gültigen ' Tasten angezeigt ' Meldung: Falls True, wird eine Meldung ausgegeben, so bald eine nicht ' zulässige Taste gedrückt wurde Public Function KeyCheck(KeyCode As Integer, _ TxtBox As TextBox, _ EingabeTyp As KeyTyp, _ Optional ToolTipTxt As Boolean = False, _ Optional Meldung As Boolean = False) As Integer Dim KeyStr_L As String Dim Typ_L As String ' Tastaturbereiche abhängig vom übergebenen KeyTyp festlegen Select Case EingabeTyp Case 0 ' NurZahlen KeyStr_L = "0123456789" Typ_L = "Zahlen 0-9" Case 1 ' NurText KeyStr_L = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _ "abcdefghijklmnopqrstuvwxyzß" Typ_L = "Text A-Z a-z" Case 2 ' TextUndZahlen KeyStr_L = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _ "abcdefghijklmnopqrstuvwxyzß0123456789" Typ_L = "Text A-Z a-z Zahlen 0-9" Case 3 ' TextZahlenSonderzeichen KeyStr_L = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _ "abcdefghijklmnopqrstuvwxyzß0123456789 :.;,!&%/()=*+-_<>" Typ_L = "Text A-Z a-z Zahlen 0-9 Sonderzeichen :.;,!&%/()=*+-_<>" End Select ' Backspace und Eingabetaste immer zulassen KeyStr_L = KeyStr_L & Chr(13) & Chr(8) ' Soll der TooltipTxt angezeigt werden ? If ToolTipTxt = True Then ' Ja TxtBox.ToolTipText = "ERLAUBT: " & Typ_L End If ' Wurde eine zulässige Taste gedrückt ? If InStr(KeyStr_L, Chr(KeyCode)) Then ' Ja, Eingabe zulassen KeyCheck = KeyCode Else ' Nein, Eingabe nicht zulassen KeyCheck = 0 ' Soll eine Meldung ausgegeben werden, falls ' eine nicht zulässige Taste gedrückt wurde ? If Meldung = True Then ' Ja, Meldung ausgeben MsgBox "Diese Taste wurde für die Eingabe " & _ "in diese Textbox gesperrt! Die zulässigen Zeichen sind: " & _ Typ_L, vbExclamation, "Diese Taste ist gesperrt" End If End If End Function
Anwendungsbeispiel:
Platzieren Sie auf das Formular 6 TextBox-Controls und benennen Sie diese "txt_NurZahlen", "txt_NurText", "txt_TxtZahlen", "txt_ZahlenSz", "txt_NurZahlenToolTip" und "txt_NurTextToolMel". Fügen Sie nachfolgenden Code in den Codeteil der Form ein.
' Quellcode für Formular - erforderlich sind folgende Textboxen: ' txt_NurZahlen ' txt_NurText ' txt_TxtZahlen ' txt_ZahlenSz ' txt_NurZahlenToolTip ' txt_NurTextToolMel ' Der Funktionsaufruf erfolgt jeweils über das KEYPRESS-Ereigniss der Textbox ' ' OHNE TOOLTIP UND MELDUNG
' Nur Zahlen zulassen ' kein ToolTip, keine Meldung Private Sub txt_NurZahlen_KeyPress(KeyAscii As Integer) KeyAscii = KeyCheck(KeyAscii, txt_NurZahlen, NurZahlen) End Sub
' Nur Text A-Z a-z zulassen ' kein ToolTip, keine Meldung Private Sub txt_NurText_KeyPress(KeyAscii As Integer) KeyAscii = KeyCheck(KeyAscii, txt_NurText, NurText) End Sub
' Nur Text A-Z a-z und Zahlen zulassen ' kein ToolTip, keine Meldung Private Sub txt_TxtZahlen_KeyPress(KeyAscii As Integer) KeyAscii = KeyCheck(KeyAscii, txt_TxtZahlen, TextUndZahlen) End Sub
' Text A-Z a-z, Zahlen und in Funktion definierte Sonderzeichen zulassen ' kein ToolTip, keine Meldung Private Sub txt_ZahlenSz_KeyPress(KeyAscii As Integer) KeyAscii = KeyCheck(KeyAscii, txt_ZahlenSz, TextZahlenSonderzeichen) End Sub
' Nur Zahlen zulassen ' MIT TOOLTIP, OHNE MELDUNG Private Sub txt_NurZahlenToolTip_KeyPress(KeyAscii As Integer) KeyAscii = KeyCheck(KeyAscii, txt_NurZahlenToolTip, NurZahlen, True) End Sub
' Nur Text A-Z a-z zulassen ' MIT TOOLTIP UND MELDUNG Private Sub txt_NurTextToolMel_KeyPress(KeyAscii As Integer) KeyAscii = KeyCheck(KeyAscii, txt_NurTextToolMel, NurText, True, True) End Sub