Einzelnen Beitrag anzeigen

Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#8

Re: Problem mit Object Inspector

  Alt 29. Aug 2008, 20:27
Der JvInspector arbeitet mit RTTI. Alle published-Properties von Objekten, die von TPersistent abgeleitet sind, haben RTTI aktiviert. Diese RTTI liest der JvInspector aus und stellt diese dann dar.

Sagen wir mal, du hast eine Klasse:
Delphi-Quellcode:
type
  TMyClass = class(TPersistent)
  private
    FBlub : string;
    FHm : integer;
  public
    property Hm: integer read FHm write FHm;
  published
    property Blub: string read FBlub write FBlub;
  end;
Wenn du jetzt diese Klassen in JvInspector hineinlädst, wirst du nur die Eigenschaft "Blub" sehen, "Hm" siehst du nicht, da Hm nicht published ist und somit keine RTTI hat.

Aber du kannst die RTTI noch hinzufügen lassen, wenn du eine neue Klasse davon ableitest und die property "Hm" in den Published-Bereich "verschiebst"
Delphi-Quellcode:
type
  TMyObj = class(TMyClass)
  published
    property Hm;
  end;
Wenn du jetzt die neue Klassen in JvInspector hineinlädst, wirst du beide Eingenschaften sehen.

Wenn du jetzt von TLabel nur bestimmte Sachen in den Inspektor laden willst, hab ich auch noch schnell nen Quelltext für dich. Diesen musst du einfach in das obige Beispiel von mir hineinkopieren.

Delphi-Quellcode:
uses
  TypInfo;

procedure TForm1.ShowObject(aObj: TObject);
begin
  JvInspector1.Root.Clear;
  TJvInspectorPropData.New(JvInspector1.Root, aObj, GetPropInfo(aObj, 'Left'));
  TJvInspectorPropData.New(JvInspector1.Root, aObj, GetPropInfo(aObj, 'Top'));
  TJvInspectorPropData.New(JvInspector1.Root, aObj, GetPropInfo(aObj, 'Align'));
end;
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat