![]() |
TListView - Denkfehler beim Löschen einzelner TListItem
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; |
AW: TListView - Denkfehler beim Löschen einzelner TListItem
Mir ist das große Ganze noch nicht klar. Was ich aber aus dem Code lese ist, daß ein SearchEintrag angelegt wird, wenn er nicht als SubItem des Items "Name" existiert oder wenn das Item "Name" nicht existiert.
Was ich nicht verstehe ist, warum das ganze Item gelöscht wird, wenn der SearchString als SubItem in Item "Name" existiert. Ich hätte es noch nachvollziehen können, wenn lediglich das SubItem entfernt wird. Zur Zeit passiert einfach folgendes:
Delphi-Quellcode:
CreateOrAddSearchStringToListItem('SubItem1', 'Item1');
CreateOrAddSearchStringToListItem('SubItem2', 'Item1'); CreateOrAddSearchStringToListItem('SubItem1', 'Item1'); CreateOrAddSearchStringToListItem('SubItem2', 'Item1');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz