Autor |
Beitrag |
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: 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)
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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 27.11.09 16:56
HelgeLange hat folgendes geschrieben : | 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 
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: Fr 27.11.09 17:33
_________________ "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
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 27.11.09 20:31
HelgeLange hat folgendes geschrieben : | 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 
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: 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
|
|
|