Was meinst du mit original Collection? Die Collection mit allen Datensätzen wird nicht verändert. Sie wird nur durchsucht und passende Datensätze werden in der Listbox angezeigt:
Delphi-Quellcode:
for i := 0 to ContactCollection.Count - 1 do
begin
if ((pos(LowerCase(edtFind.Text), LowerCase(ContactCollection.Items[i].Name)) > 0) or
(pos(Lowercase(edtFind.Text), LowerCase(ContactCollection.Items[i].Vorname)) > 0)) then
lbContacts.AddItem('', ContactCollection.Items[i]);
end;
Die Reihenfolge der Datesätze in der Collection bleibt unverändert.
Zitat von
mirage228:
Oder du speicherst beim Filtern im Objekt des Listeintrages nur den Original-Index ab, damit könntest Du das auch lösen.
Das könnte ich natürlich auch machen, anstatt alle Daten zu speichern nur den Index, wo die dfaten in der Collection stehen. Würde allerdings bedeuten, dass ich den bestehenden Code an mehereren Stellen ändern müsste und davor schrecke ich noch etwas zurück, da es eine ziemliche Arbeit wäre.