Ist das richtig, Du nutzt Delphi 6?
Bei Delphi 7 verfügt TListView über die Methoden FindCaption und FindData. Gab es die bei Delphi 6 noch nicht?
Wenn es sie bereits geben sollte, könnten sie eventuell eine Alternative für die Suche sein, statt über alle Einträge zu iterieren.
Zitat von
Delphi 7 - Hilfe:
FindCaption (Methode von TCustomListView)
Die Methode FindCaption gibt einen Listeneintrag mit dem angegebenen Titel zurück.
Delphi-Syntax:
function FindCaption(StartIndex: Integer; Value: string; Partial, Inclusive, Wrap: Boolean): TListItem;
C++ Syntax:
TListItem* __fastcall FindCaption(int StartIndex, AnsiString Value, bool Partial, bool Inclusive, bool Wrap);
Beschreibung
Mit FindCaption können Sie nach dem Eintrag in der Liste suchen, dessen Titel mit dem String im Parameter Value identisch ist. Wenn der Parameter Inclusive den Wert true hat, wird die Überprüfung bei dem in StartIndex angegebenen Listeneintrag begonnen. Andernfalls beginnt die Suche beim nächsten Element. Ist der Parameter Wrap true, wird die Suche am Anfang der Liste fortgesetzt, wenn der gesuchte Eintrag bis zum Listenende nicht gefunden wurde. FindCaption gibt den ersten Eintrag zurück, dessen Eigenschaft Caption mit Value identisch ist. Wenn der Parameter Partial auf true gesetzt wird, werden auch Titel gefunden, die mit dem Teilstring Value beginnen. Hat Partial den Wert false, wird nach einer genauen Übereinstimmung gesucht. Wenn kein Eintrag gefunden wird, gibt FindCaption nil (Delphi) bzw. NULL (C++) zurück.
Eine ganz blöde Idee:
Manchmal kann es die Arbeit mit visuellen Komponenten deutlich beschleunigen, wenn man das Programm solange minimiert.
Delphi-Quellcode:
procedure TForm1.ToolButton23Click(Sender: TObject);
var
lvItem: TListItem;
begin
Application.Minimize;
for I := stringgrid2.RowCount-1 downto 1 do
begin
lvItem := FindListViewItem(ListView1, stringgrid2.Cells[0,i], 1);
if lvItem <> nil then
begin
{mach was}
end;
end;
Application.Restore;
end;
Und nein, elegant ist das nicht.