Hallo,
habe folgendes kleines Problem.
Delphi-Quellcode:
Type
TBaseObject = class(TObject)
private
FPropertyList : PPropList;
protected
function GetCount : Integer;
function GetItem(index : Integer) : PPropInfo;
procedure FillPropertyList; // <- hier
public
constructor Create;
destructor Destroy; override;
property Count : Integer read GetCount;
property Items[Index : Integer] : PPropInfo read GetItem;
published
end;
Wie muss ich FillPropertyList ausgestalten, so das alle zukünftigen, von TBaseObject abgeleiteten, Objekte ihre
Properties in die Liste eintragen?
Ein
Delphi-Quellcode:
procedure TBaseObject.FillPropertyList;
begin
GetPropList(Self.ClassInfo, FPropertyList);
end;
hilft nicht richtig weiter, da mir verborgen bleibt ob bei der Rückgabe von zB.:
Delphi-Quellcode:
TSystem = class(TBaseObject)
private
FDomainRole : Byte;
...
public
...
property DomainRole : Byte read FDomainRole;
...
end;
es sich um einen Integer oder um ein Byte handelt(TypInfo.TypeKind = tkInteger).
Ziel der ganzen Übung soll sein, ein "Überobjekt" zu haben, das alle Properties seiner "Kindobjekte" die
public sind
auch im Public-Bereich sichtbar macht, ohne das ich für jedes "Kindobjekt" diese peer Hand eintragen muss.
In der Art von:
Delphi-Quellcode:
TComputer = class(TObject)
private
FSystem : TSystem;
protected
public
constructor Create;
destructor Destroy; override;
published
end;
...
procedure TForm1.ButtonClick(Sender: TObject);
var
Comp : TComputer;
begin
Comp := TComputer.Create;
ListBox1.Items.Add(Comp.DomainRole);
Comp.Free;
end;
Hat jemand ein Lösungsvorschlag oder andere Idee?