Home » Tutorials » VCL » TObjectList

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);