我有一个自定义控件,它继承自Vcl.Controls.TCustomControl
我想为其分配一个TPopupMenu
实例,但这不起作用,因为PopupMenu似乎无法访问。
我不确定为什么会这样?在线文档似乎暗示可以在TCustomControl中使用PopupMenu吗?但是__property TPopupMenu* PopupMenu = {read=FPopupMenu, write=SetPopupMenu};
是protected
我在定制控件中将属性重新定义为public
但是现在的错误是SetPopupMenu
无法访问。 SetPopupMenu
未列为protected
。也许private
?我在文档中没有看到它。
这是一个虚拟实现,是否像添加一个TPopupMenu
成员并自己编写一个SetPopupMenu
函数那样简单?我想念什么?
PopupMenu
属性在protected
中为TControl
,在TCustomControl
中不提升。因此,您需要将其promote到派生类中的public
/ __published
,但不必完全redeclare,这听起来像您在尝试做。
是,SetPopupMenu()
是private
(在TControl
中,因此派生类无法访问。
尝试一下:
class TMyControl : public TCustomControl
{
...
__published:
__property PopupMenu; // <-- that is all you need!
};
对于要在派生控件中公开访问的任何其他protected
基本属性也是如此。