Rubrik: Controls · ComboBox | VB-Versionen: VB4, VB5, VB6 | 01.11.00 |
Eingabelänge einer ComboBox begrenzen Bekanntlich gibt es bei ComboBoxen die MaxLength-Eigenschaft nicht. Wie Sie die Eingabelänge dennoch begrenzen, zeigen wir Ihnen hier... | ||
Autor: Dieter Otter | Bewertung: | Views: 17.824 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Bei TextBoxen ist es ganz normal, daß man über die MaxLength-Eigenschaft die Eingabe auf eine bestimmte Anzahl von Zeichen (Eingabelänge) begrenzen kann. Wie sieht es aber bei einer ComboBox aus? Hier gibt es die Eigenschaft MaxLength nicht.
Mit Hilfe der Windows-APIs läßt sich aber auch hier die Eingabelänge auf eine bestimmte Anzahl von Zeichen begrenzen.
Hier der Quellcode:
' Zunächst die benötigten API-Deklarationen Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Declare Function FindWindowEx Lib "user32" _ Alias "FindWindowExA" ( _ ByVal hWnd1 As Long, _ ByVal hWnd2 As Long, _ ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long Declare Function SetWindowText Lib "user32" _ Alias "SetWindowTextA" ( _ ByVal hwnd As Long, _ ByVal lpString As String) As Long ' Die nachfolgende Routine setzt die Eingabelänge auf eine ' bestimmte Länge Public Sub cmbMaxLength(ByRef Combo As ComboBox, _ mLen As Integer) Const EM_LIMITTEXT = &HC5 Dim hWndCmb As Long hWndCmb = FindWindowEx(Combo.hWnd, 0&, vbNullString, _ vbNullString) If hWndCmb <> 0 Then If mLen > 0 Then Call SetWindowText(hWndCmb, "") Call SendMessage(hWndCmb, EM_LIMITTEXT, mLen, 0&) Else Call SendMessage(hWndCmb, EM_LIMITTEXT, 0&, 0&) End if End If End Sub