Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Suchen im Listview
Breslfezn - Do 03.02.11 15:51
Titel: Suchen im Listview
Hallo Leute!
Da ich noch ein Anfänger in Turbo Delphi bin, habe ich eine Frage:
Wie kann man in einem ListView Daten über ein Edit-Feld suchen und dann durch eine Markierung sichtbar machen???
Vielen Dank im Vorraus
Breslfezn
elundril - Do 03.02.11 16:18
Hallo und :welcome: im Delphi-Forum!
Kommt drauf an. Willst du es im kompletten Listview suchen oder nur einer Spalte vom ListView (wenn es auf Report gestellt ist)? Auf jeden Fall wirst du nicht um eine Schleife rum kommen die die ListView vom ersten bis zum letzten Eintrag durchgeht und dann vergleicht.
lg elundril
Narses - Do 03.02.11 16:21
Moin und :welcome: im Forum!
Probier das mal hier, vielleicht kommst du damit weiter (Listviews sind für Anfänger schon etwas schwer zu durchschauen :?):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := 0 to ListView1.Items.Count-1 do if (ListView1.Items.Item[i].Caption = Edit1.Text) then begin ListView1.Items.Item[i].Selected := TRUE; ListView1.Items.Item[i].Focused := TRUE; Exit; end; ShowMessage('Nicht gefunden!'); |
cu
Narses
Webo - Do 03.02.11 16:24
Es hängt davon ab, inwiefern du suchen willst. Wenn du nur die Einträge mit dem Edit-Text vergleichen willst, also auf vollständige Funde überprüfen möchtest, dann ist das relativ einfach. Du gehst sämtliche Einträge und vergleichst, ob der Name des Items, welches du grade hast gleich dem Text des Edits ist. Dann kann man mit ListView1.Items.Item[0].Selected := True; dieses Element markieren.
Delete - Do 03.02.11 16:41
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| function SearchInListView(text: string; AListView: TListView; bCaseInsensitive: Boolean = true): Boolean; var i,j: integer; ACompareText: String; begin Result := False; if bCaseInsensitive then text := lowercase(text); AListView.Items.BeginUpdate; try for i := 0 to AListView.Items.Count -1 do begin ACompareText := AListView.Items[i].Caption; if bCaseInsensitive then ACompareText := lowercase(ACompareText); if pos(text,ACompareText)>0 then begin AListView.ItemIndex := i; Result := True; Exit; end;
for j := 0 to AListView.Items[i].SubItems.Count -1 do begin ACompareText := AListView.Items[i].SubItems[j]; if bCaseInsensitive then ACompareText := lowercase(ACompareText); if pos(text,ACompareText)>0 then begin AListView.ItemIndex := i; Result := True; Exit; end; end; end; finally AListView.Items.EndUpdate; end; end;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 then begin key := #0; if not SearchInListView(Edit1.Text,ListView1) then ShowMessage('Nix gefunden.'); end; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!