Hallo!
Ich entwickle gerade eine neue Komponente und beschäftige mich nun erstmals mit Property Editoren, Component Editoren, der Speicherung von eigenen Objekten im
DFM etc.
Hintergrundinfos:
Meine Komponente (TMyComp) hat eine Items-Property, in der ein Objekt (TMyItemList) gespeichert ist, welches eine Liste von eigenen Objekten (TMyItem) in einem dynamischen Array verwaltet. Die Eigenschaft TMyComp.Items soll im Objektinspektor angezeigt werden, um an den Component Editor ranzukommen, weiter nichts (Realisierung ist bereits geglückt). In diesem Component Editor wird TMyItemList mit TMyItems gefüllt, ähnlich wie bei einer ActionList. Später möchte ich die TMyItem-Objekte auch im Objektinspektor anzeigen können, wenn sie in meinem Component Editor ausgewählt sind.
Fragen:
Wie muss ich TMyComp.Items, welches vom Typ TMyItemList ist, im
DFM speichern? Wie muss ich die TMyItem-Objekte in TMyItemList speichern, damit ich sie später im
OI anzeigen lassen kann? Ich habe schon DefineProperties (
Eigene Property - Zur Runtime wieder zurückgesetzt) gefunden und mir die Hilfe dazu durchgelesen, bin mir allerdings noch etwas unsicher, ob das die richtige Lösung für mich ist und wie ich das anwenden muss (in TMyComp für Items und in TMyItemList für das Array-Property mit den TMyItem-Objekten?).
Delphi-Quellcode:
TMyItem = class // könnte man auch z.B. von TComponent ableiten, wenn notwendig
...
end;
TMyItemList = class // könnte man auch z.B. von TComponent ableiten, wenn notwendig
private
FItems: array of TMyItem;
protected
function GetItem(Index: Integer): TChoiceGroupItem;
...
public
procedure Clear;
function Count: Integer;
procedure Delete(AIndex: Integer);
...
property Item[Index: Integer]: TMyItem read GetItem; default;
end;
TCustomMyComp = class(TCustomControl)
private
FItems: TMyItemList;
...
public
...
property Items: TMyItemList read FItems;
end;
Umgebung: Delphi 5 auf WinXP
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."