Discussion:
TFrame-Ableitung
(zu alt für eine Antwort)
Peter Schütt
2016-01-13 09:38:30 UTC
Permalink
Hallo,
ich hätte gerne eine TFrame-Ableitung (mit neuen published-Attributen für
den Objektinspektor), die ich als Basisklasse für neue Frames nehmen kann
und die sich in der IDE genauso verhalten wie die normen TFrames.

Ein bisschen Recherche hat mir nur wilde Sachen gezeigt, wie z.B.

http://codeverge.com/embarcadero.delphi.oodesign/publishing-custom-frame-propertie/1078877

So etwas möchte ich nicht im Produktiv-Code machen.

Gibt es da sauberere Lösungen (gerne auch Delphi 10, weil wir dahin
wahrscheinlich im März umsteigen)?

Ciao
Peter Schütt
--
www.pstt.de
Peter Below
2016-01-13 17:53:51 UTC
Permalink
Post by Peter Schütt
Hallo,
ich hätte gerne eine TFrame-Ableitung (mit neuen published-Attributen
für den Objektinspektor), die ich als Basisklasse für neue Frames
nehmen kann und die sich in der IDE genauso verhalten wie die normen
TFrames.
Ein bisschen Recherche hat mir nur wilde Sachen gezeigt, wie z.B.
http://codeverge.com/embarcadero.delphi.oodesign/publishing-custom-frame-propertie/1078877
Post by Peter Schütt
So etwas möchte ich nicht im Produktiv-Code machen.
Gibt es da sauberere Lösungen (gerne auch Delphi 10, weil wir dahin
wahrscheinlich im März umsteigen)?
Es scheint nicht anders zu gehen da TCustomModule als einzig normal
verfügbare module-Klasse (in Designeditors.pas) für Frames nicht zu
funktionieren scheint. Vermutlich könnte man einfach eine Klasse von
TCustomModule ableiten und die für die Registrierung verwenden, aber es
ist halt unklar, welche der Methoden man da überschreiben muss. Leider
ist das ein praktisch undokumentiertes Gelände. Allerdings solltest Du
die source für Designeditors.pas haben, da kann man also mal nachsehen,
wie TCustomModule implementiert ist.

Mh, so wie ich das sehe könnte es ausreichen, die Nestable-Funktion zu
überschreiben und da True zurückzugeben.

Mein normaler Ansatz (da ich keine zusätzlichen published members
brauche) ist visual frame inheritance: ich füge einfach die Frame-Unit
für die Frame-Basisklasse zum Projekt hinzu (die liegt read-only in
einem speziellen Verzeichnis für Template-Klassen) und verwende dann
New->Others um die Basisklasse in den inheritable items auszuwählen und
davon eine neue projektspezifische Klasse abzuleiten.

Ich muß gestehen dass ich kein Freund des Designers bin, ich setze
eigene Properties (public, nicht published) lieber im Kode. Das ist
selbstdokumentierend, der Designer ist das nicht.
--
Peter Below
TeamB
Loading...