Wenn der Fokus im Listenfeld liegt, scrollt dieses automatisch zum ersten Element, das mit dem eingegebenen Buchstaben beginnt. Es wird jedoch nicht automatisch Elemente auf der Basis von mehr als dem ersten Buchstaben markieren. Gibt man zum Beispiel „ap“ ein, möchte man sicherlich, dass im Feld das erste Element markiert wird, das mit „ap“ beginnt. Dieser Tipp erklärt, wie man dieses Verhalten mit der API-Funktion SendMessage realisieren kann. Die folgende Deklaration muss im Programm aufgenommen werden:
Public Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, _ ByVal lParam As String) As Long
Außerdem wird die folgende Konstante benötigt, die das Listenfeld auffordert, das erste Element mit der angegebenen Vorsilbe zu markieren:
Public Const LB_SELECTSTRING = &H18C
Zusätzlich zum Listenfeld erfordert diese Methode ein Textfeld. Der Anwender gibt im Textfeld den Text ein, und das Listenfeld wählt automatisch das erste hierzu passende Element aus. Die Nachricht wird in der Change-Event-Prozedur des Textfeldes gesendet:
Private Sub Text1_Change() If Text1.Text "" Then SendMessage List1.hwnd, LB_SELECTSTRING, -1, Text1.Text End If End Sub
Für einen Anwender ist die Möglichkeit, Listenfelder auf der Basis von mehr als nur dem ersten Buchstaben auszusuchen, dann besonders nützlich, wenn die Liste zahlreiche Elemente beinhaltet.
Der Umsatz steigt um 15 Prozent, der Nettogewinn um 57 Prozent. Im nachbörslichen Handel kassiert…
Aus 61,9 Milliarden Dollar generiert das Unternehmen einen Nettoprofit von 21,9 Milliarden Dollar. Das größte…
Mehr Digitalisierung wird von den Unternehmen gefordert. Für KMU ist die Umsetzung jedoch nicht trivial,…
Der Nettoprofi wächst um 117 Prozent. Auch beim Umsatz erzielt die Facebook-Mutter ein deutliches Plus.…
Vom Standpunkt eines Verbrauchers aus betrachtet, stellt sich die Frage: Wie relevant und persönlich sind…
Scamio analysiert und bewertet die Gefahren und gibt Anwendern Ratschläge für den Umgang mit einer…