Einzelnen Beitrag anzeigen

RSE

Registriert seit: 26. Mär 2010
254 Beiträge
 
Delphi XE Enterprise
 
#1

Speichern eines Objekts mit einer Liste von Objekten im DFM

  Alt 13. Apr 2010, 09:12
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."
  Mit Zitat antworten Zitat