![]() |
ListItem := Listview1.Items.Add; ?
moin,
siehe threadname, ich verstehe die zuweisung irgendwie nicht. hat das den gleichen effekt wie: ListView.Items.Add(ListItem); ? |
Re: ListItem := Listview1.Items.Add; ?
ganz einfach: die items einer listbox sind ein einfacher string. die kann man ganz einfach mit einem Paramete ausfüllen, den man bereits mitgeben kann.
Die Items der Listview hingegen sind eine eigene Klasse mit vielen Eigenschaften usw., wo man nicht verlangen kann, dass man sich vorher ein Item selbst macht, dessen Eigenschaften initialisiert und dann der Listview hinzufügt Du könnstest aber einfach schreiben: Listbox1.Items.Add(''); |
Re: ListItem := Listview1.Items.Add; ?
Zitat:
ListView1.Items.Add(ListItem) würde gar nicht compilieren, da Add() keine Parameter erwartet. Add() erstellt von sich aus ein neues ListItem und liefert den Zeiger darauf. Man könnte also z.B. schreiben:
Delphi-Quellcode:
Der alternative Weg, ein ListItem einzufügen, ist anscheinend ein wenig verbuggt.
var NewItem: TListItem;
begin NewItem := ListView1.Items.Add; NewItem.Caption := 'Neues Item'; end;
Delphi-Quellcode:
type
TMySpecialListItem = class(TListItem) public TimeStamp: TDateTime; LinkedObj: TObject; end; Falsch:
Delphi-Quellcode:
"Richtig":
procedure Foo;
var NewItem: TMySpecialListItem; begin NewItem := TMySpecialListItem.Create(ListView1.Items); {Item wird noch nicht angezeigt} NewItem.Caption := 'Neues Item'; NewItem.TimeStamp := now; LinkedObj := SomeThreadOrSomeImageOrWhatever; ListView1.Items.AddItem(NewItem); {Eigenschaft Caption geht verloren => leerer Eintrag} end;
Delphi-Quellcode:
[size=2]Alternative method may or may not cause memory leaks :gruebel: [/size]
procedure Foo;
var NewItem: TMySpecialListItem; begin NewItem := TMySpecialListItem.Create(ListView1.Items); {Item wird noch nicht angezeigt} ListView1.Items.AddItem(NewItem); NewItem.Caption := 'Neues Item'; end; |
Re: ListItem := Listview1.Items.Add; ?
Moin!
Grundlegend geht es auch darum, das die Items der ListView einmal automatisch in einer Liste im ListView verwaltet werden und die Items selber auch interne Informationen des ListViews bekommen. Dadurch das beide in der selben Unit deklariert sind nutzt Borland das friend Verhalten der beiden Klassen aus um spezielle Informationen den Items zu geben welche dadurch nicht öffentlich in TListItem oder TListView deklariert werden müssen. MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 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