Hallo,
sieht jemand meinen Denkfehler?
Ich will einen ListItem-Eintrag entfernen über ListView.Items.Delete(...), wenn der SearchString schon in den SubItems der ListView vorhanden ist.
Jedoch gelingt es mir nicht, die entsprechenden Einträge aus der ListView zu entfernen. Es verbleiben Einträge mit SubItems.Count > 1.
Oder bin ich total auf dem Holzweg?
Vielen Dank!
Delphi-Quellcode:
procedure CreateOrAddSearchStringToListItem(ASearchString, AName : string; ASearchID : Int64);
var
MyListItem : TListItem;
SearchStringIndex : Integer;
begin
MyListItem := MyListView.FindCaption(0, AName, False, True, False);
if Assigned(MyListItem) then
begin
// Schon vorhandenen ListItem-Eintrag um weitere SearchStrings- und IDs erweitern!
SearchStrungIndex := MyListItem.SubItems.IndexOf(ASearchString);
if SearchStringIndex = -1 then
begin
// Diesen SearchString gibt es im ListItem-Eintrag noch nicht, daher ergänzen (Add)
MyListItem.SubItems.AddObject(ASearchString, TObject(ASearchID));
end else
begin
// Diesen SearchString gibt es schon, das ListItem muss gelöscht werden
MyListView.Items.Delete(MyListItem.Index); //<------ Problem: hier bleiben aber noch SubItems übrig!!!!
end;
end
else
begin
// ListItem-Eintrag noch nicht vorhanden -> neu anlegen (Create)!
MyListItem := MyListView.Items.Add;
MyListItem.Caption := AName;
MyListItem.SubItems.AddObject(ASearchString, TObject(ASearchID));
end;
end;