Autor Beitrag
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Do 26.11.09 18:02 
Also ich habe mal wieder ein kleines Problem, diesmal mit der RTTI.
Ich will nach bestimmten Properties schauen, deren Namen aus einem Array kommen. Auf dem Formular habe ich bisher nur Standart-Delphi-Komponenten (die Idee ist, auch 3rd-party-Komponenten zu uterstützen, ohne diese zu kennen)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
const MAX_PROPERTIES = 4;
      AProperties : Array [1..MAX_PROPERTIES] Of String = (
                      'Caption''Hint''Picture''Glyph'
                    );


var PropInfo: PPropInfo;
    i : Integer;
begin
  Label3.Caption := aComp.ClassName;
  For i := 1 to MAX_PROPERTIES Do begin
    PropInfo := GetPropInfo(aComp.ClassInfo, AProperties[i], tkProperties);
    If Assigned(PropInfo) Then
      StringGrid1.Cells[0,i] := AProperties[i];
  end;


Nun kommen solche Ziken wie TEdit hat kein Hint, ListBox auch nicht. Picture und Glyph findet er generell nicht.

Hat einer ne Idee ?

Update : Das scheint nur in design-time ein problem zu sein, wenn ich das ganze in ein Programm einbaue udn starte, krieg ich alle von mir gewünschten Properties.

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 27.11.09 09:42 
Ich weiß auch nicht, was Borland Inprise Embarcadero da geritten hat, als sie die RTTI entworfen haben. Erstens unvollständig (keine Records, keine Pointer, keine Interfaces, Funktions- und Methoden-Deklarationen nur, wenn die Parameter darstellbar sind; dann aber trotzdem keine Aufrufkonvention, ...). Ich hab mal versucht, in Delphi mir ne eigene, möglichst zu Borland Inprise Embarcadero kompatible Version zu bauen, die auch Pointer, Records usw. konnte. Das scheiterte dann aber am Compiler, weil ich in Konstanten Pointer auf diese Konstante nicht initialisieren konnte (obwohl er konstant gewesen wäre ...

Ansonsten zwecks Hint bitte ggf. nen Blick in die JVCL werfen, die haben da mit TJvFormStorage oder wie das Teil hieß glaube sowas, wie du's haben willst. Auch mit nem Design-Time-Experten dazu.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Fr 27.11.09 16:56 
user profile iconHelgeLange hat folgendes geschrieben Zum zitierten Posting springen:
Nun kommen solche Ziken wie TEdit hat kein Hint, ListBox auch nicht. Picture und Glyph findet er generell nicht.

Spontan würde ich mal tippen, dass das alles Properties sind die einen Editor haben, kann das sein?

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
HelgeLange Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Fr 27.11.09 17:33 
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconHelgeLange hat folgendes geschrieben Zum zitierten Posting springen:
Nun kommen solche Ziken wie TEdit hat kein Hint, ListBox auch nicht. Picture und Glyph findet er generell nicht.

Spontan würde ich mal tippen, dass das alles Properties sind die einen Editor haben, kann das sein?


Hint property hat keinen Property Editor und auch keine Get/Set-Methode :

ausblenden Delphi-Quelltext
1:
property Hint: string read FHint write FHint stored IsHintStored;					


Die Property ist als published deklariert in TControl und dieses leitet sich schon direkt von TComponent ab.

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Fr 27.11.09 20:31 
user profile iconHelgeLange hat folgendes geschrieben Zum zitierten Posting springen:
Hint property hat keinen Property Editor[...]

Bei mir haben die Editoren, wird IIRC von den Jedis oder GExperts installiert. Daher meine Vermutung.

Hast du da mal ein kleines Test-Programm? Ich würde mir das gern mal ansehen.

Der Tipp mit dem FormStorage ist gar nicht mal so schlecht, das gabs auch schon von der RxLib, und da konnte ich grade verifizieren dass es gehen müsste. Dabei machen die da gar keine seltsamen Hacks, sollte eigentlich auch dein Code gehen...

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
HelgeLange Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Fr 27.11.09 21:50 
Naja, gibt kein Beispielprogramm direkt, da man das entweder in einen vorhandenen Komponenteneditor reinlegt oder in eine form selber und dann einfach mal laufen lässt

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw