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.
Suchmaschinenoptimierung (SEO) ist ein zentraler Faktor für den nachhaltigen Erfolg im digitalen Wettbewerb. Sie generiert…
Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…
Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…
Hinter 84 Prozent der Zwischenfälle bei Herstellern stecken Schwachstellen in der Lieferkette. Auf dem Vormarsch…
Es kommt angeblich 2028 auf den Markt. Das aufgeklappte Gerät soll die Displayfläche von zwei…
Das System basiert auf Hardware von HPE-Cray und Nvidia. Die Inbetriebnahme erfolgt 2027.