Vererben geht, man muß nur einiges Beachten.
* der Formdesigner geht bei Fehlern zu Mammi ... wenn er was nicht erkennt, dann springt er immer auf TForm zurück
* * z.B. wenn die TypInfos in
DPR/DPROJ falsch sind -> der {Kommentar} in der der
UNIT in der
DPR, bzw. der daraus synchronisierte <FORM>-Eintrag in der DPROJ
* im FormDesigner wird bei FormVererbung
niemals deine Klasse benutzt
* * selbst dann nicht, wenn du diesen Vorfahren in ein eigenes
Package kompilierst und bei Delphi bekannt machst. (RegisterComponent und/oder RegisterClass)
* im DormDesigner wird eine "virtuelle" Klasse generiert und geladen (die heißt zufällig genau wie deine Klasse, aber die
RTTI wird dynamisch zusammengebaut)
* * und die
RTTI wird auch immer direkt von TForm geerbt, selbst wenn dein Vorfahre mehrere Ebenen hat (weitere Vorfahren zwischen deinem Typ und TForm/TCustomForm)
* * diese
RTTI hat nur den gleichen Namen und vermutlich eine Kopie der "published" Felder/Methoden, aber ohne Inhalt/Code
* das ist auch der Grund, warum überschiebene Methoden im FormDesigner nicht aufgerufen werden und warum auch niemals die eigenen Property im ObjektInspektor angezeigt werden.
* das Einzige, was im FormDesigner wirklich "vererbt" wird, sind die DFMs, also es werden erst die Komponenten des/der Vorfahren geladen, aus deren DFMs, und darüber dann die Änderungen aus der
DFM der aktuellen Form eingefügt
PS:
* bei vererbten Frames kommt es drauf an, wie die auf der Form liegen
* * als Vererbung über Objektablage reingezogen, bzw. über ProjektManager oder direkt aus der
PAS mit dem Frame ... dann ist alles wie bei TForm
* * oder als registrierte Komponente ... hier ist es die echte Klasse und die hat dann auch alle Property im
OI und überschriebene Methoden werden ausgeführt (in deinem geladenen
Package)
Besonders merkt man sowas, wenn man eine abgeleitete Form hat
und eine eigenen Komponente, welche auf Methoden/Eigenschaften der Form zugreifen will, was im FormDesigner so nie direkt funktionieren kann, da der Owner dort eben eine "andere" Klasse ist ... merkt man auch daran, dass IS/AS hier sagen das passe nicht