vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Sch?tzen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Controls · TextBox & RichTextBox   |   VB-Versionen: VB4, VB5, VB617.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öttgerBewertung:     [ Jetzt bewerten ]Views:  18.967 
www.direct-solutions-software.comSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 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

Dieser Tipp wurde bereits 18.967 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel