AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auflisten von Sub-Eigenschaften einer Komponente

Ein Thema von josef-b · begonnen am 31. Aug 2017 · letzter Beitrag vom 31. Aug 2017
 
josef-b

Registriert seit: 6. Jun 2004
Ort: bei Jena in Thüringen
95 Beiträge
 
Delphi 11 Alexandria
 
#1

Auflisten von Sub-Eigenschaften einer Komponente

  Alt 31. Aug 2017, 06:24
Ich möchte mir wegen Mapping von Eigenschaften die Eigenschaften
einer Komponente anzeigen lassen.

Dazu habe ich diesen Codeschnipsel gefunden, der auch funktioniert.

Allederdings werden da nur die Haupt-Eigenschaften aufgelistet. Ich möchte
nun aber von einer bestimmten Eigenschaft, die Unter-Eigenschaften
auflisten lassen, die in einer Klasse deklariert sind.



Delphi-Quellcode:
procedure TF1.ListComponentProperties(Component: TComponent; Strings: TStrings);
var
  Count, Size, I: Integer;
  List: PPropList;
  PropInfo: PPropInfo;
  PropOrEvent, PropValue: string;
begin
  Count := GetPropList(Component.ClassInfo, tkAny, nil);
  Size := Count * SizeOf(Pointer);
  GetMem(List, Size);
  try
    Count := GetPropList(Component.ClassInfo, tkAny, List);
    for I := 0 to Count - 1 do
    begin
      PropInfo := List^[I];
      if PropInfo^.PropType^.Kind in tkMethods then
        PropOrEvent := 'Event'
      else
        PropOrEvent := 'Property';
      PropValue := VarToStr(GetPropValue(Component, PropInfo^.Name));
      Strings.Add(Format('[%s] %s: %s = %s', [PropOrEvent, PropInfo^.Name,
        PropInfo^.PropType^.Name, PropValue]));
    end;
  finally
    FreeMem(List);
  end;
end;

// Example: List all Properties/Events from Button1 in a TListBox

procedure TF1.Button1Click(Sender: TObject);
begin
  ListComponentProperties(Button1, ListBox1.Items);
end;

So habe ich z.B. in einer Komponente eine Klasse deklariert

Delphi-Quellcode:
TMyEigenschaft = Class(TPersistent)
    private
    FEigenschaft1: boolean;
    FEigenschaft2: boolean;
    ....

 published
    property Eigenschaft1: boolean read FEigenschaft1 write FEigenschaft2;
    property Eigenschaft2: boolean read FEigenschaft2 write FEigenschaft2;
    ....
Er zeigt mir dann an: MyEigenschaft TMyEigenschaft aber eben nicht die Untereigenschaften.

Wie kann ich die (zusätzlich) auslesen und auflisten?

Geändert von josef-b (31. Aug 2017 um 07:29 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz