vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Suchen in einer ListBox 
Autor: ModeratorDieter (Moderator)
Datum: 18.09.01 12:29

Hi Spike,

das ist aber eigenartig.
Ich hab's eben nochmal explizit probeirt.

Die Routine funktioniert - sowohl bei unsortierten Listen, als auch bei sortieren Liste.

Prüf' doch nochmals Deinen Code.

Cu
Dieter
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Suchen in einer ListBox 
Autor: Spike
Datum: 18.09.01 11:56

Hi,

ich möchte gerne eine Suchfunktion schreiben, die den Inhalt einer ListBox nach dem Inhalt einer Textbox durchsucht und danach den gefundenen Eintrag in der ListBox selektiert!
Die Textbox und die ListBox befinden sich auf verschiedenen Formularen.
Es funktioniert im großen und ganzen schon, doch nur dann, wenn der Inhalt der Textbox exakt (auch Groß- und Kleinschreibung) mit dem Inhalt der ListBox übereinstimmt!
Wie kann ich nach einer teilweisen Übereinstimmung suchen?
z. B. in der ListBox steht "Die Killerhand", im Textfeld "Killer".
Nun soll er mir den Eintrag "Die Killerhand" als Treffer anzeigen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Suchen in einer ListBox 
Autor: ModeratorDieter (Moderator)
Datum: 18.09.01 12:04

Hallo Spike,

hierfür einfach nachfolgenden Code verwenden:
<code><font color=green>' Schnelle Suche innerhalb einer ListBox</font>
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</code>
<code><font color=green>' Prüft, ob ein Wert in einer ListBox enthalten ist
' und gibt als Ergebnis den ListIndex zurück
' (-1, wenn nicht vorhanden)</font>
Public Function IsInListe(Liste As ListBox, _
  ByVal Item As String) As Integer
 
  IsInListe = SendMessage(Liste.hwnd, _
    LB_FINDSTRING, -1, Item)
End Function</code>
Cu
Dieter
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Suchen in einer ListBox 
Autor: Spike
Datum: 18.09.01 12:25

Das funktioniert noch nicht ganz.
Wenn ich nach einem String suche, der innerhalb der ListBox mehrmals vorkommt, liefert die Funktion -1!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Suchen in einer ListBox 
Autor: Spike
Datum: 18.09.01 12:41

Nein, es funktioniert nicht!
Hier der Code, wie ich Deine Funktion aufrufe:

Private Sub cmdSucheStarten_Click()

Dim Index As Integer

Index = IsInListe(frmMain.listTitel, Me.txtTitel.Text)

If Index = -1 Then
MsgBox "Keine Einträge vorhanden!", vbInformation, "Suche abgeschlossen"
Else
Unload Me
frmMain.listTitel.Selected(Index) = True
End If

End Sub

In der Listbox gibt es den Eintrag "Die Killerhand". Wenn ich jetzt in die Textbox
"die killerhand" eingebe, findet er den Eintrag, wenn ich aber nur "killer" eingebe, bringt er die MsgBox!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Suchen in einer ListBox 
Autor: ModeratorDieter (Moderator)
Datum: 18.09.01 13:04

Hallo Spike,

das Problem ist, dass Du die Form entlädst und dann den Index an die frmMain übergibst - das geht nicht!

Cu
Dieter
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Suchen in einer ListBox 
Autor: Spike
Datum: 18.09.01 13:12

OK, jetzt entlade ich die Form nicht mehr, aber es funktioniert trotzdem nicht!
Er beachtet zwar die Gro- und Kleinschreibung nicht, doch wenn ich nach einem Teilstring suche, der in der ListBox vorkommt, liefert die Funktion -1!

Ich muss also "die killerhand" eingeben, damit der den Eintrag in der ListBox markiert.
Ich will aber, das z. B. "killer" auch ausreicht um einen Treffer zu haben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Suchen in einer ListBox 
Autor: Spike
Datum: 18.09.01 13:31

Jetzt weiss ich worans liegt!
Die Funktion durchsucht die ListBox nach dem String der in der Textbox steht, jedoch muss der Eintrag der ListBox mit dem String der in der Textbox steht beginnen!
Also muss, wenn ich "killer" eingebe, ein Eintrag in der ListBox vorhanden sein, der mit "killer" beginnt!
Ich möchte aber, das der String nach dem ich suche, irgendwo in der ListBox steht!
Geht das?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Suchen in einer ListBox 
Autor: ModeratorDieter (Moderator)
Datum: 18.09.01 13:41

Hallo Spike,

dan musst Du die Suche ungefähr folgendermassen realisiern:
<code>  Dim Index As Integer
  Dim I As Integer
 
  With List1
    Index = -1
    For I = 0 To .ListCount - 1
      If .List(I) Like "*" & Text1.Text & "*" Then
        Index = I: Exit For
      End If
    Next I
    .ListIndex = Index
  End With</code>
Cu
Dieter
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Danke 
Autor: Spike
Datum: 18.09.01 14:36

Danke, jetzt klappt es!
Ich habs noch ein wenig abgeändert und nun sucht er nach dem was ich eingegeben habe ohne auf Groß- und Kleinschreibung zu achten, egal wo es in der ListBox steht!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel