Einzelnen Beitrag anzeigen

Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Property-Info zur Laufzeit

  Alt 11. Dez 2004, 14:47
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?
  Mit Zitat antworten Zitat