Ich habe eine Listbox in der ich mit
AddObject Einträge hinzufüge. Dann habe ich ein Eingabefeld, welches die Listboxeinträge filtert im OnChange Ereignis des Eingabefeldes:
Delphi-Quellcode:
procedure TfrmAdressen.ApplyFilter;
var
i : Integer;
begin
lbContacts.Items.Clear;
case cbFind.ItemIndex of
0: // Name oder Vorname
begin
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;
end;
1: // Ort
begin
for i := 0 to ContactCollection.Count - 1 do
begin
// ...;
Der Inhalt der Listbox wird also gelöscht und dann werden nur Items hinzugefügt, die den Filterkriterien entsprechen. Jetzt ist es allerdings so, dass, wenn man auf einen gefilterten Eintrag doppelt klickt, nicht die zugehörigen Daten, die im Objekt des Eintrages gespeichert sind, des gefilterten Eintrages angezeigt werden, sondern die Daten des Eintrages im ungefilterten Zustand.
Und das verstehe ich nicht, denn ich lösche doch die Listbox. Allerdings scheint die Listbox noch die alten Objekteinträge gespeichert zu haben.