Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Property-Info zur Laufzeit (https://www.delphipraxis.net/35762-property-info-zur-laufzeit.html)

Alter Mann 11. Dez 2004 14:47


Property-Info zur Laufzeit
 
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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz