VB 5/6-Tipp 0057: ListBox mit API schneller durchsuchen
von ActiveVB
Beschreibung
Oft stellt sich das Problem, daß in einer mit vielen Argumenten gefüllten Listbox ein Element gesucht werden muß. Will man dies von VB aus lösen, bleibt nichts anderes übrig, als die Liste Position fü rPosition zu durchsuchen. Die hier vorgestellte Api macht das zwar auf die gleiche Weise, nur wesentlich schneller.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Listen-Steuerelement "List1" ' Steuerelement: Textfeld "Text1" Option Explicit Private 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 Private Const LB_FINDSTRING = &H18F Private Sub FillList() Dim Char$, AA$, X%, Y% Randomize List1.Clear For Y = 1 To 4000 AA = "" For X = 1 To 4 Char = Chr$(Int(26 * Rnd) + 65) AA = AA & Char Next X List1.AddItem AA Next Y End Sub Private Sub Form_Load() Form1.Show Text1.Text = "Bitte warten, Liste wird gefüllt" DoEvents Call FillList Text1.Text = "" End Sub Private Sub Text1_Change() Dim ListIndex& ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, Text1.Text) List1.ListIndex = ListIndex If ListIndex > -1 Then List1.TopIndex = ListIndex End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 5 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Agent J am 23.02.2006 um 10:17
@Andrej
Die Replace Funktion ist in VB5 noch nicht Enthalten,
auf http://www.vb-tec.de/replace.htm gibt es aber eine
ersatz funktion die außerdem viel schneller als die VB6
eigene ist.
Kommentar von AGKD am 24.01.2006 um 16:34
Hallo!
ich bin ein richtiger Anfänger bei VB aber Tipp 0057: ListBox mit API schneller durchsuchen ist genau die Lösung des Problems, die ich lange danach suche.
Die Frage ist nur, wie kann ich die geschriebenen Skripte oder Makros verwenden? Was brauche ich bei mir auf dem Rechner zu installieren. Ich habe nämlich kein VB auf Rechner.
Anhand eines Beispiels, wo schrittweise erklärt wird, was man tun soll, wäre für mich ideal!
Vielen Dank für die Infos und Hilfe im Voraus!
Gruß
Ali
Kommentar von Andrej am 09.08.2005 um 09:42
Hallo Leute,
dieses Prog. ist genau das, was ich schon lange suche. Das Problem aber ist, dass ich VB5 habe. Bei mir erkennt er den Befehl "Replace" nicht.
Ich bitte um Hilfe
Mfg Abdrej
Kommentar von Andre am 28.08.2001 um 15:40
Kann man auch nach einem bestimmten ItemData wert suchen lassen?
Danke im voraus!
Kommentar von Mirko Klotz am 14.12.2000 um 11:23
Man kann statt ListBoxen mit der gleichen Technik auch ComboBoxen durchsuchen. Statt der Konstanten LB_FINDSTRING = &H18F ist dafür lediglich die Konstante CB_FINDSTRING = &H14C beim Aufruf von SendMessage zu verwenden.