AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi RTTI - Typinformation kommt nicht am Ziel an
Thema durchsuchen
Ansicht
Themen-Optionen

RTTI - Typinformation kommt nicht am Ziel an

Ein Thema von I.A · begonnen am 16. Mär 2009 · letzter Beitrag vom 21. Mär 2009
 
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#15

Re: RTTI - Typinformation kommt nicht am Ziel an

  Alt 18. Mär 2009, 15:45
hi,
die GetComponentProps-funktion ist doch gar ncht so lang...und da mache ich genau das, was du versuchst, in eine KLasse zu kapseln.

GetComponentProps(AComponent:string;List:TStrings; AppendSubclasses:boolean);

aComponent => Klassenname als String z.b. 'TEdit'

AppendSubclasses heist einfach, dass bei Unterstrukturen wie (z.b. TFont) gleich die Unterwerte aufgelöst werden.also anstatt einfach nur TFont steht halt dann in der liste TFont.Sytle,TFont.Color,... und entsprechend das TypeObject dazu (siehe nachfolgende info).

List: ne einfache stringlist die später alle eigenschaften als string enthält und als angehängtes Object die rtti-Informationen (Name [für klassen interessant] und Kind [tk*])...das Object nennt sich da halt einfach TTypeObject und ist so deklariert (classes_u.pas):

Delphi-Quellcode:
  TTypeObject = class
  private
    FPropKind:TTypeKind;
    FTypeName:String;
    FCompType: PTypeInfo;
  public
    procedure Assign(Src:TTypeObject);
    property PropKind:TTypeKind read FPropKind write FPropKind;
    property TypeName:String read FTypeName write FTypeName;
    property CompType: PTypeInfo read FCompType write FCompType;
  end;
der OI im DFMEdit liest diese liste aus (inspector_u.pas:GetPropValues),kopiert diese rtti-Infos in ein neues Object (TCellOptions.TypeObject) und zeigt anhand des Kind in dem TTypeObject den entsprechenden Editor (TEdit,TCombobox,TChecklistbox, etc) an (inspector_u.pas:StringGrid1SelectCell).

TCellOptions enthält zu den RTTI-Infos noch Infos, ob ein property direkt geändert werden darf (bei methoden und klassenproperties unerwünscht ).

ich hoffe das machts etwas klarer...ansonsten ist die funktion doch net so lang

an die speziellen Property-editoren (TPicture,TTreenodes,...) kommst du nicht ran, da diese nur in den Entwurfszeitpackes (also nur innerhalb der delphi-IDE) vorhanden sind.da musst du dir was eigenes basteln. die Treenode-Struktur (Binärdaten) hab ich schon entschlüsselt, TPicture noch nicht ganz und bei TImagelist, hab ich noch keinen Weg gefunden, eine maske zu erstellen. bzw. die vorhandene Maske anzuwenden. die Dokumentation ist auch sehr spährlich.

versteh nicht ganz, warum du das auf XML stellen willst...dfm ist doch schon ein passendes Format.und ich habe für D3 noch keine funktionierende XML-Implementation gefunden.

ansonsten kannst du mir ja mal den code schicken, und ich schau mal, ob ich den fehler finde.

eine Sache, die mir gerade so ins auge fällt:

Delphi-Quellcode:
    property MethodKind: TTypeKind;
    property MethodName: TStringType;
du brauchst private variablen, um properties speichern zu können...hat aber nix mit rtti zu tun, sondern mit normalem Klassendesign.
so sollte das aussehen...(kannst statt string auch deine eigene Definition nehmen (TStringType)):

Delphi-Quellcode:
type
  cls=class(basisclass)
    FKind:TTypeKind;
    FName:string;
  published
    property MethodKind: TTypeKind read fKind write fKind;
    property MethodName: string read fName write fName;
HTH Frank
  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 02:28 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