Zitat:
Mein Problem ist, dass ich die Intelligenz in die jeweiligen Objekte packen möchte. Aktuell wird alles im zentralen TPlanGrid gezeichnet. Es wird daher (jetzt schon) sehr komplex z.B. Positionen für die Maussteurung zu ermitteln...
Alle Objekte, die visuell sind sollten sich selbst zeichnen und auch auf Ereignisse selbst reagieren. Das hast du ja schon erkannt.
Zitat:
Die Richtung mit TObjectList und TControl ist auf jeden Fall mal der richtige Weg.
Die Liste brauchst du ja hauptsächlich, damit die dynamisch erzeugten Objekte auch wieder entfernt werden können. Da ist die ObjectList mit "OwnsObjects" schon eine feine Sache.
Zitat:
Ich tue mich im Moment nur etwas schwer damit was ich von was ableite...
Fang halt mal bei irgendeiner visuellen Klasse (die dem was du willst nahe kommt, z.B. TPanel) an und schau, von welcher Klasse die abgeleitet ist. Dann steigst du immer höher in der Klassenhirarchie aufwärts, bis du bei irgendeiner Klasse ankommst, die noch alle Funktionalitäten (z.B. Canvas, Mausereignisse, usw.) hat, die du benötigst und erweiterst sie um das was du brauchst.
Delphi-Quellcode:
TPlanGrid = class(TCustomControl) //z.B.
(...)
FPlanGridGroupList : TObjectList;
end;
TPlanGridGroup = class(TCustomControl)
(...)
FPlanGridLineList: TObjectList;
end;
TPlanGridLine = class(TCustomControl)
(...)
end;