![]() |
Volltextsuche in Listview
Hi,
ich hatte vor einiger Zeit schonmal das Problem dass ich nicht wusste wie ich in einer Listview suchen kann (samt Subitems). Dank eurer Hilfe habe ich es dann doch aber hingekriegt. Jetzt habe ich wieder das Problem, dass ich in einer Listview suchen will aber nicht nach dem exaktem Text sondern so wie bei Itunes, dass wenn ich den Titel "Hallo" habe, dass dann schon das eingeben von beispielsweise "Ha" den Titel findet. Ich hoffe mein Vorhaben ist einigermaßen zu verstehen. Ich habe mal im Forum gesucht (ja ich kann das :-D ) und habe einen Thread gefunden bei dem es um so ziemlich das gleiche ging doch die einzige Lösung die genannt wurde, war auf das "VirtualTreeview" umzusteigen, welches angeblich so eine Suchfunktion hat. Da ich das aber nur sehr ungern will möchte ich von euch wissen wie man das vielleicht auch mit der Standard Komponente machen kann. MFG Lars Wiltfang |
Re: Volltextsuche in Listview
Wenn Du mit Pos arbeitest, sollte das funktionieren.
|
Re: Volltextsuche in Listview
Also eine einfache Methode ist die Suche mit
![]()
Delphi-Quellcode:
// Überprüft, ob in "Item" irgendwo "aText" steht
function ItemHasText(Item: TListItem; const aText: string): boolean; var i: integer; begin result := True; if Pos(AnsiUpperCase(aText), AnsiUpperCase(Item.Caption)) > 0 then exit; for i:=0 to Item.SubItems.Count-1 do if Pos(AnsiUpperCase(aText), AnsiUpperCase(Item.SubItems[i])) > 0 then exit; result := False; end; // Durchsucht "aListView" nach "aText" function FindItemText(aListView: TListView; const aText: string): TListItem; var i: integer; begin for i:=0 to aListView.Items.Count-1 do begin result := aListView.Items[i]; if ItemHasText(result, aText) then exit; end; result := nil; end;
Delphi-Quellcode:
Ungetestet, einfach mal so eingegeben
// Aufruf:
procedure TForm1.Button1Click(Sender: TObject); var FoundItem: TListItem; begin FoundItem := FindItemText(ListView1, Edit1.Text); if not Assigned(FoundItem) then ShowMessage('Text nicht gefunden') else FoundItem.Selected := True; end; |
Re: Volltextsuche in Listview
- Leite eine neue Klasse von TListView ab
- in diese neue Klasse fügst du eine zusätzliche TList(TStringList) ein - in diese zusätzliche Liste fügst du alle Texte ein, die möglich sind - bei der Suche gehst du diese Liste durch und suchst mit Pos() nach einer Entsprechung - alle dei dem pos entsprechen fügst du der Listview Liste zur Ansicht hinzu fettisch |
Re: Volltextsuche in Listview
StrUtils und AnsiContainsText/AnsiContainsStr würde den Code noch kürzen ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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-2025 by Thomas Breitkreuz