继承自 Vcl.Controls.TCustomControl 的自定义控件无权访问 SetPopupMenu
Custom made control that inherits from Vcl.Controls.TCustomControl doesn't have access to SetPopupMenu
我有一个继承自 Vcl.Controls.TCustomControl
的自定义控件
我想为它分配一个 TPopupMenu
实例,但这不起作用,因为 PopupMenu 似乎不可访问。
我不确定这是为什么?在线文档似乎表明 PopupMenu 在 TCustomControl 中可用?
然而 __property TPopupMenu* PopupMenu = {read=FPopupMenu, write=SetPopupMenu};
是 protected
我在自定义控件中将 属性 重新定义为 public
但是现在的错误是 SetPopupMenu
不可访问。 SetPopupMenu
未列为 protected
。也许 private
?我没有在文档中看到它。
这是一个虚拟实现吗?是否就像添加一个 TPopupMenu
成员并自己编写一个 SetPopupMenu
函数一样简单?我错过了什么?
PopupMenu
属性 在 TControl
中是 protected
而在 TCustomControl
中没有提升。因此,您需要在派生的 class 中 将其提升 为 public
/__published
,但不要 重新声明 完全是,听起来你正在尝试这样做。
是的,SetPopupMenu()
是 private
(在 TControl
中),因此派生的 classes 无法访问。
试试这个:
class TMyControl : public TCustomControl
{
...
__published:
__property PopupMenu; // <-- that is all you need!
};
您希望在派生控件中公开访问的任何其他 protected
基础 属性 也是如此。
我有一个继承自 Vcl.Controls.TCustomControl
我想为它分配一个 TPopupMenu
实例,但这不起作用,因为 PopupMenu 似乎不可访问。
我不确定这是为什么?在线文档似乎表明 PopupMenu 在 TCustomControl 中可用?
然而 __property TPopupMenu* PopupMenu = {read=FPopupMenu, write=SetPopupMenu};
是 protected
我在自定义控件中将 属性 重新定义为 public
但是现在的错误是 SetPopupMenu
不可访问。 SetPopupMenu
未列为 protected
。也许 private
?我没有在文档中看到它。
这是一个虚拟实现吗?是否就像添加一个 TPopupMenu
成员并自己编写一个 SetPopupMenu
函数一样简单?我错过了什么?
PopupMenu
属性 在 TControl
中是 protected
而在 TCustomControl
中没有提升。因此,您需要在派生的 class 中 将其提升 为 public
/__published
,但不要 重新声明 完全是,听起来你正在尝试这样做。
是的,SetPopupMenu()
是 private
(在 TControl
中),因此派生的 classes 无法访问。
试试这个:
class TMyControl : public TCustomControl
{
...
__published:
__property PopupMenu; // <-- that is all you need!
};
您希望在派生控件中公开访问的任何其他 protected
基础 属性 也是如此。