![]() |
ListBox Suche ergänzen?
Hallo,
ich suche wie folgt eine ListBox durch. Bei mir wird allerdings nur ein Item selektiert und immer das letzte. Möchte es aber so habe, dass alle Item selektiert werden wo eine Suche erfolgreich war.
Delphi-Quellcode:
Die ListBox bei diesem Code auf MultiSelect:=True setzen hilft nicht. Und anstatt ListBox1.ItemIndex:=i; -> ListBox1.ItemSelect:=i; nehmen kann man nicht, so nen Befehl gibt es nicht.
procedure TForm1.SearchEditChange(Sender: TObject);
var Stationscount, i, Kandidat: Integer; begin Stationscount:=ListBox1.Items.Count; for i:=0 to Stationscount-1 do begin Kandidat:=Pos(SearchEdit.Text, AnsiLowerCase(ListBox1.Items[i])); if Kandidat <> 0 then begin ListBox1.ItemIndex:=i; end; end; end; Wer kann mir das weiter helfen? Danke! |
Re: ListBox Suche ergänzen?
Hallo,
so geht's:
Delphi-Quellcode:
Grüße, Matze
procedure TForm1.SearchEditChange(Sender: TObject);
var i: Integer; begin for i := 0 to ListBox1.Count - 1 do begin ListBox1.Selected[i] := Pos(SearchEdit.Text, AnsiLowerCase(ListBox1.Items[i])) > 0; end; end; |
Re: ListBox Suche ergänzen?
Oder
Delphi-Quellcode:
Das sollte dann wirklich case-insensitiv sein ;)
procedure TForm1.SearchEditChange(Sender: TObject);
var i: Integer; begin ListBox1.Items.BeginUpdate; try for i := 0 to ListBox1.Count - 1 do ListBox1.Selected[i] := AnsiContainsText(ListBox1.Items[i],SearchEdit.Text); finally ListBox1.Items.EndUpdate; end; end; |
Re: ListBox Suche ergänzen?
Was heißt "case-insensitiv"? :gruebel:
|
Re: ListBox Suche ergänzen?
Ohne Berücksichtigung von Groß- und Kleinschreibung.
|
Re: ListBox Suche ergänzen?
Hab das jetzt so:
Delphi-Quellcode:
procedure TForm1.SearchEditChange(Sender: TObject);
var i, u: Integer; begin for u:=0 to ListBox1.Items.Count-1 do //hier muss ich die Liste unselectiert machen begin ListBox1.Selected[u]:=False; end; for i:=0 to ListBox1.Items.Count-1 do begin ListBox1.MultiSelect:=True; if Pos(SearchEdit.Text, AnsiLowerCase(ListBox1.Items[i])) <> 0 then ListBox1.Selected[i]:=True; end; SearchEdit.Hint:=''; end; procedure TForm1.SearchEditMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ListBox1.SelCount>0 then SearchEdit.Hint:=IntToStr(ListBox1.SelCount) + ' ' + _('hits') else SearchEdit.Hint:=_('Nothing found'); end; |
Re: ListBox Suche ergänzen?
Das ist doch viel zu umständlich.
Delphi-Quellcode:
procedure TForm1.SearchEditChange(Sender: TObject);
var i: Integer; begin ListBox1.Multiselect := true; ListBox1.Items.BeginUpdate; try for i := 0 to ListBox1.Count - 1 do //Einträge werden dann selektiert, wenn der Suchstring enthalten ist, ansonsten deselektiert ListBox1.Selected[i] := AnsiContainsText(ListBox1.Items[i],SearchEdit.Text); finally ListBox1.Items.EndUpdate; end; end; |
Re: ListBox Suche ergänzen?
"AnsiContainsText" ist bei mir undefiniert. :roteyes:
Geht das wenn ich "AnsiLowerCase" nehme? |
Re: ListBox Suche ergänzen?
Dann musst Du aber auch beide Strings in Kleinschreibung wandeln. Oder eben StrUtils einbinden und doch AnsiContainsText verwenden.
|
Re: ListBox Suche ergänzen?
Thx... :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz