Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Compiler erkennt TControl.PopupMenu nicht

  Alt 29. Jul 2009, 10:26
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.
Uli Gerhardt
  Mit Zitat antworten Zitat