Du meintest schon das richtige.
Die Liste wird Bestandteil Deines Objektes (also Deiner Klasseninstanz).
Es gibt auch die Möglichkeit, Klassenvariablen zu verwenden (z.B.
class var GlobalList: TList;
).
Dann würden alle Klasseninstanzen auf die selbe Liste zugreifen können. Sie müsste dann ggf. in einem Klassenconstruktor erzeugt und in einem Klassendestructor aufgelöst werden.
Du willst ja aber offenbar eine Liste in jeder Klasseninstanz.
Nur mal noch zwei kleine Anmerkungen:
Üblich ist als Präfix für private Felder ein F (ich nutze inzwischen meist ein kleines f). Natürlich ist das nicht zwingend, hilft aber möglichen Dritten, Deinen Quelltext besser lesen zu können.
Die Objektliste könntest Du als Nur-Lesen-Property definieren (wenn sie direkt vom Objekt verwaltet wird) oder als Property mit Getter und Setter. Dann könntest Du im Setter erkennen, wenn eine neue Liste zugewiesen wird und gleich ein Neuzeichnen veranlassen.
Delphi-Quellcode:
type
TDesigner = Class(TObject)
private
Graphics : IGPGraphics;
fBrush: IGPBrush;
fPen: IGPPen;
fFont : IGPFont;
fMyObjects : TObjectList<TDesignerObject>; // privat
public
Destination_PB : TPaintBox;
procedure Initialize;
procedure Draw;
procedure AddObject(objecttype : TDesignerObjectType; x,y,d : integer);
procedure Dest_PaintMe (Sender : TObject);
property MyObjects : TObjectList<TDesignerObject> read fMyObjects {write set_MyObjects}; // öffentlich
end;