Rubrik: Maus & Tastatur · Tastatursteuerung | VB-Versionen: VB4, VB5, VB6 | 03.06.04 |
Tasten global für eine Form sperren Bestimmte Zeichen lassen sich auf sehr einfache Weise global für die gesamte Form sperren. Wie? Das erfahren Sie hier. | ||
Autor: Dieter Otter | Bewertung: | Views: 13.558 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Nehmen wir an, Sie haben eine Form mit vielen Eingabefeldern (TextBox-Controls, ComboBox-Controls, etc.) erstellt. Deren Inhalte sollen in einer Datenbank gespeichert werden. Die Eingabe von Hochkomma und Sternchen (Asterix) möchten Sie jedoch unterbinden, um Syntax-Fehler bei SQL-Abfragen vorzubeugen. Das Sperren von bestimmten Zeichen selbst, lässt sich wie folgt realisieren:
Private Text1_KeyPress(KeyAscii As Integer) If Chr$(KeyAscii) = "'" Or Chr$(KeyAscii) = "*" Then KeyAscii = 0 End If End Sub Private Sub Combo1_KeyPress(KeyAscii As Integer) If Chr$(KeyAscii) = "'" Or Chr$(KeyAscii) = "*" Then KeyAscii = 0 End If End Sub
Diesen Code müsste man nun in das KeyPress-Ereignis aller Eingabe-Controls auf der Form einfügen, was nicht nur den Quellcode der Form aufbläht, sondern auch richtig Arbeit bedeutet. Platziert man bswp. nachträglich eine neue TextBox auf die Form, muss man daran denken, den Code auch hier wieder in das KeyPress-Ereignis einzufügen.
Es geht aber auch anders! Und zudem eleganter!
Wenn man die KeyPreview-Eigenschaft der Form auf True festlegt, wird zunächst immer erst die Form über neue "Tastenanschläge" benachrichtigt. Auf diese Weise lassen sich bestimmte Tasten gezielt abfragen und sperren:
Private Sub Form_Load() ' Wichtig, damit die Form als Erstes über ' Tastatur-Ereignisse benachrichtigt wird! Me.KeyPreview = True End Sub
Private Sub Form_KeyPress(KeyAscii As Integer) ' Nicht zulässige Zeichen Const sChars = "'*?" ' Wurde ein unzulässiges Zeichen eingegeben? If InStr(sChars, Chr$(KeyAscii)) > 0 Then ' Zeichen sperren KeyAscii = 0 End If End Sub