|
Anders als bei einer TextBox können Sie für das Eingabefeld
eines ListView- oder eines TreeView-Steuerelements aus den Microsoft
Common Controls keine Begrenzung der Zeichenzahl angeben, die der
Anwender eingeben kann - diese Steuerelemente verfügt nicht über
die Eigenschaft MaxLength. Sie können aber bei beiden im Ereignis
BeforeLabelEdit das Fenster-Handle des Eingabefelds ermitteln und
bei diesem die Zeichenzahl über die API-Funktion SendMessage mit
der Nachricht EM_LIMITTEXT begrenzen.
Die Hilfsfunktionen ListViewLabelMaxLength bzw.
TreeViewLabelMaxLength sorgen für den Aufruf von SendMessage. Sie
übergeben jeweils das betreffende ListView- bzw.
TreeView-Steuerelement 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.
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
Private Const EM_LIMITTEXT = &HC5
Public Sub ListViewLabelMaxLength(ListView As ListView, _
Optional ByVal MaxLength As Long)
Dim nWnd As Long
Const LVM_GETEDITCONTROL = &H1018
If MaxLength <= 0 Then
MaxLength = 0
End If
nWnd = SendMessage(ListView.hwnd, LVM_GETEDITCONTROL, 0, 0)
SendMessage nWnd, EM_LIMITTEXT, MaxLength, 0
End Sub
Public Sub TreeViewLabelMaxLength(TreeView As TreeView, _
Optional ByVal MaxLength As Long)
Dim nWnd As Long
Const TVM_GETEDITCONTROL = &H110F
If MaxLength <= 0 Then
MaxLength = 0
End If
nWnd = SendMessage(TreeView.hwnd, TVM_GETEDITCONTROL, 0, 0)
SendMessage nWnd, EM_LIMITTEXT, MaxLength, 0
End Sub
|