Der Standard ist Public, aber wurde die Klasse oder ein Vorfahr mit dem Kompilerschalter {$M+} kompiliert (z.B. TControl und somit auch TComponent und die ganze
VCL), dann wird die Grundeinstellung auf Published geändert, für diese Komponenten/Klassen.
Und das Published macht auch ein paar Probleme ... z.B. bei überladenen Methoden.
Delphi-Quellcode:
strict private // ist wirklich privat
private // entspricht unitintern eher einem public
strict protected // ist wirklich protected
protected // entspricht unitintern eher einem public
public // ab hier lohnt sich strict nicht, da es eh schon global ist, also gibt's das auch nicht
published
Zitat:
und da landen die Komponenten in keinem Abschnitt.
Doch, tun sie ... in dem, was standardmäßig definiert wurde.
Man könnte es also auch selber angeben. (nur blöd, daß der
VCL-Parser so doof ist)
Der Grund wurde auch schon genannt.
Die
VCL, genauer der
DFM-Loader geht immer über die "alte"
RTTI und dort sind standardmäßig nur für Published Property und Methoden die Informationen vorhanden.
Nur Published-Property, also speziell Eventmethoden und Komponenten-Variablen können verarbeitet werden, was für das Laden der
DFM notwendig ist.