Zitat von
hoika:
ja dein Compiler sagt das, meiner noch nicht (D6)
Na, das ist ja schwach.
Zitat von
hoika:
Wie soll das mit dem THackControl denn laufen,
wenn es auch von TControl abgeleitet ist ?
Es sei denn, du machst das property PopupMenu noch public.
Nö, das ist ja der Trick. Das:
Delphi-Quellcode:
type
THACK_Control = class(TControl);
ist die
komplette Typdefinition - keine Member, Property-Redeklarationen oder sonstwas.
Jetzt hast du eine Klasse in der aktuellen
Unit - und
innerhalb einer Unit beschränkt protected den Zugriff
nicht - im Gegensatz zu "strict protected". D.h das Member PopupMenu von THACK_Control ist in der aktuellen
Unit de facto public. Und wegen der einfach gestrickten Definition von THACK_Control ist ein TControl auch (fast
) ein THACK_Control, also geht auch der Cast i.O.
Zitat von
hoika:
Das gefällt mir aber gar nicht ...
Da ist nichts wirklich Gefährliches dran. Der Entwickler von TControl hat ja schon entschieden, dass er dir die Möglichkeit des Zugriffs auf PopupMenu gibt, indem er es protected gemacht hat.