Einzelnen Beitrag anzeigen

weinberger

Registriert seit: 29. Jul 2009
Ort: Simmling
28 Beiträge
 
Delphi XE3 Professional
 
#1

Mit RTTI verschachtelte Eigenschaften einer Komponente auslesen

  Alt 11. Okt 2016, 14:01
Delphi-Version: XE3
Hallo, ich habe eine Komponente (damals noch mit Delphi 2 erstellt) für Feiertage. Dies enthält 26 Eigenschaften mit gleichem Namen+Nummerierung. Diese enthalten wiederum jeweils drei Eigenschaften. Ich möchte nun in einer Schleife mittels RTTI von sämtlichen Feiertagen, also 01 - 26 immer das Datum auslesen. Ich habe mit RTTI keinerlei erfahrung. Kann mir jemand helfen?

Die Komponente Sieht so aus:

Delphi-Quellcode:
type
TFeiertagStatus = (Day_Off, Work_Day, not_defined);

TTag = class(TPersistent)
  private
  FDatum, FBeschreibung : String;
  FStatus : TFeiertagStatus;
  protected
  public
  published
  Property Datum : String read FDatum write FDatum;
  Property Beschreibung : String read FBeschreibung write FBeschreibung;
  Property Status : TFeiertagStatus read FStatus write FStatus;
end;

TFeiertag = class(TComponent)
  private
    LAdvent : TDateTime;
    FJahr : integer;
    FFeiertag01 : TTag;
    FFeiertag06 : TTag;
    FFeiertag12 : TTag;
    FFeiertag03 : TTag;
    FFeiertag04 : TTag;
    FFeiertag05 : TTag;
    FFeiertag08 : TTag;
    FFeiertag09 : TTag;
    FFeiertag10 : TTag;
    FFeiertag11 : TTag;
    FFeiertag17 : TTag;
    FFeiertag13 : TTag;
    FFeiertag14 : TTag;
    FFeiertag24 : TTag;
    FFeiertag25 : TTag;
    FFeiertag26 : TTag;
    FFeiertag23 : TTag;
    FFeiertag07 : TTag;
    FFeiertag15 : TTag;
    FFeiertag16 : TTag;
    FFeiertag18 : TTag;
    FFeiertag19 : TTag;
    FFeiertag20 : TTag;
    FFeiertag21 : TTag;
    FFeiertag22 : TTag;
    FFeiertag02 : TTag;
    function IsLeapYear(AYear : Integer) : Boolean;
    function GetKarfreitag(AJahr: Integer): String;
    function GetOstersonntag(nYear: Integer): String;
    function GetOstermontag(AJahr: Integer): String;
    function GetChristiHimmelfahrt(AJahr: Integer): String;
    function GetPfingstsonntag(AJahr: Integer): String;
    function GetPfingstmontag(AJahr: Integer): String;
    function GetFronleichnam(AJahr: Integer): String;
    function GetBuss_und_Bettag(AJahr: Integer): String;
    function GetMuttertag(AJahr: Integer): String;
    function GetVolkstrauertag(AJahr: Integer): String;
    function GetTotensonntag(AJahr: Integer): String;
    function GetAdvent1(AJahr: Integer): String;
    function GetAdvent2(AJahr: Integer): String;
    function GetAdvent3(AJahr: Integer): String;
    function GetAdvent4(AJahr: Integer): String;
    function GetJahr: integer;
    procedure SetJahr(Value:integer);
    procedure Ermitteln;
    procedure NeuErmitteln;
  protected
  public
    constructor Create(AOwner:TComponent);override;
    destructor Destroy;override;
  published
    Property Jahr : integer read GetJahr write SetJahr;
    Property Feiertag01 : TTag read FFeiertag01 write FFeiertag01;
    Property Feiertag02 : TTag read FFeiertag02 write FFeiertag02;
    Property Feiertag03 : TTag read FFeiertag03 write FFeiertag03;
    Property Feiertag04 : TTag read FFeiertag04 write FFeiertag04;
    Property Feiertag05 : TTag read FFeiertag05 write FFeiertag05;
    Property Feiertag06 : TTag read FFeiertag06 write FFeiertag06;
    Property Feiertag07 : TTag read FFeiertag07 write FFeiertag07;
    Property Feiertag08 : TTag read FFeiertag08 write FFeiertag08;
    Property Feiertag09 : TTag read FFeiertag09 write FFeiertag09;
    Property Feiertag10 : TTag read FFeiertag10 write FFeiertag10;
    Property Feiertag11 : TTag read FFeiertag11 write FFeiertag11;
    Property Feiertag12 : TTag read FFeiertag12 write FFeiertag12;
    Property Feiertag13 : TTag read FFeiertag13 write FFeiertag13;
    Property Feiertag14 : TTag read FFeiertag14 write FFeiertag14;
    Property Feiertag15 : TTag read FFeiertag15 write FFeiertag15;
    Property Feiertag16 : TTag read FFeiertag16 write FFeiertag16;
    Property Feiertag17 : TTag read FFeiertag17 write FFeiertag17;
    Property Feiertag18 : TTag read FFeiertag18 write FFeiertag18;
    Property Feiertag19 : TTag read FFeiertag19 write FFeiertag19;
    Property Feiertag20 : TTag read FFeiertag20 write FFeiertag20;
    Property Feiertag21 : TTag read FFeiertag21 write FFeiertag21;
    Property Feiertag22 : TTag read FFeiertag22 write FFeiertag22;
    Property Feiertag23 : TTag read FFeiertag23 write FFeiertag23;
    Property Feiertag24 : TTag read FFeiertag24 write FFeiertag24;
    Property Feiertag25 : TTag read FFeiertag25 write FFeiertag25;
    Property Feiertag26 : TTag read FFeiertag26 write FFeiertag26;
  end;
Rainer

Geändert von mkinzler (11. Okt 2016 um 14:45 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat