TObjectList
Anwendung
Instanzieren und freigeben
Eine TObjectList muss man, wie jede andere Klasse, instanzieren und freigeben.
var ObjectList: TObjectList; begin ObjectList := TObjectList.create; ObjectList.OwnsObjects := true; [...] ObjectList .free;
Eine Besonderheit ist die Eigenschaft OwnsObjects, mit der man steuern kann, ob die Liste die Objekte in der Liste besitzen soll oder nicht. Wenn die Liste ein Objekt besitzt, wird beim Löschen eines Objektes aus der Liste auch das Objekt freigegeben.
Das zusätzliche Setzen von OwnsObjects kann man sich sparen, indem man den passenden Konstruktor verwendet.
ObjectList := TObjectList.create(true);
Außerdem ist OwnsObjects per default True. Deshalb ist folgendes äquivalent:
ObjectList := TObjectList.Create;
TObjectList ist in der Unit Contnrs deklariert. Diese Unit muss also eingebunden sein.
Objekte hinzufügen
Objekte werden mit der Methode Add in die ObjectList eingefügt.
ObjectList.add(TKlasse.create);
Man kann auch Referenzen hinzufügen
var test: TKlasse; [..] test := TKlasse.create; ObjectList.Add(test);
Objekte auslesen
Objekte können über die Eigenschaft items ausgelesen werden, wenn man den Index des Objektes kennt.
object := TKlasse(ObjectList.items[index]);
oder sicherer mit Laufzeitprüfung:
object := (ObjectList.Items[index]) as TKlasse;
Die ObjectList liefert nur Objekte vom Typ TObject zurück. Man muss deshalb einen Typecast durchführen.
Objekte verschieben oder löschen
ObjectList.Move(Index, NeuerIndex); ObjectList.Delete(Index);
Index eines Objektes abfragen
index := ObjectList.IndexOf(Objekt);