|
Anders als bei einer TextBox können Sie für das Eingabefeld
einer ComboBox keine Begrenzung der Zeichenzahl angeben, die der
Anwender eingeben kann - die ComboBox verfügt nicht über die
Eigenschaft MaxLength. Sie können aber die Zeichenzahl über die
API-Funktion SendMessage
mit der Nachricht CB_LIMITTEXT
begrenzen.
Die Hilfsfunktion SetComboBoxMaxLength sorgt für den Aufruf von
SendMessage. Sie übergeben ihr die betreffende ComboBox und die
maximale Zeichenzahl im optionalen Parameter MaxLength. Übergeben
Sie als Zeichenzahl einen Wert kleiner oder gleich 0,
oder lassen Sie den Parameter weg, wird die Begrenzung wieder
aufgehoben. Im optionalen Parameter Cut können Sie angeben, ob der
Inhalt des Eingabefeldes erhalten bleiben soll, auch wenn er länger
als die neu gesetzte Zeichenzahl sein sollte. Die Voreinstellung ist
True, so dass der Inhalt standardmäßig auf die neu gesetzte
Zeichenzahl beschnitten wird.
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Public Sub SetComboBoxMaxLength(ComboBox As ComboBox, _
Optional ByVal MaxLength As Long, _
Optional ByVal Cut As Boolean = True)
Const CB_LIMITTEXT = &H141
If MaxLength < 0 Then
MaxLength = 0
End If
With ComboBox
SendMessage .hwnd, CB_LIMITTEXT, MaxLength, ByVal 0&
If Cut Then
If MaxLength Then
If Len(.Text) > MaxLength Then
.Text = Left$(.Text, MaxLength)
.SelStart = MaxLength
.SelLength = 0
End If
End If
End If
End With
End Sub
|