Nur Zahlen in Textboxen

Wolfgang Kluge
wolfgang@vbwelt.de

Es kommt ziemlich oft vor, daß man in Textboxen eigentlich nur Zahlen oder nur Buchstaben, bzw. bestimmte Alphanumerische Zeichen haben will.

Wenn man den Inhalt aus dem Code raus füllt, ist dies noch ziemlich leicht zu bewerkstelligen, aber sobald der User drangelassen wird, wirds brenzlig.

Was liegt näher, als nur solche Zeichen zu erlauben.
Mit nur einer Zeile Code, die im KeyPress-Ereigniss der Textbox(kann Natürlich auch jedes andere Steuerelement sein) stehen muß wird genau dieser Effekt erreicht.

' Nur Zahlen in Textbox erlauben
If InStr("1234567890" + Chr$(8), Chr$(KeyAscii)) = 0 Then KeyAscii=0


Im Beispiel wird ausser den 10 Zahlen noch Chr$(8) erlaubt. Damit wird erreicht, daß Text in dieser Textbox auch wieder gelöscht werden kann.

Eine weitere Möglichkeit ist, die Funktion Windows zu überlassen. Dabei geht es aber nicht bestimmte Zeichen doch zuzulassen. Wirklich nur Zahlen. Ausserdem kann WindowsNT nichts mit der Funktion anfangen.

 Deklaration:
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE = (-16)


Als erstes werden die Parameter ausgelesen und danach mit einem neuen zurückgeschrieben.

' Nur Zahlen in Textboxen
Dim f As Long
f = GetWindowLong(Text1.hwnd, GWL_STYLE)
f = f Or &H2000
SetWindowLong Text1.hwnd, GWL_STYLE, f

' Normalzustand
Dim f As Long
f = GetWindowLong(Text1.hwnd, GWL_STYLE)
f = f And Not &H2000
SetWindowLong Text1.hwnd, GWL_STYLE, f