Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#1

TListView - Denkfehler beim Löschen einzelner TListItem

  Alt 4. Sep 2012, 17:30
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;

Geändert von TiGü ( 4. Sep 2012 um 17:39 Uhr)
  Mit Zitat antworten Zitat