c++builder - 从 Vcl.Controls.TCustomControl 继承的自定义控件无权访问 SetPopupMenu
问题描述
我有一个继承自的自定义控件Vcl.Controls.TCustomControl
我想为其分配一个TPopupMenu
实例,但这不起作用,因为 PopupMenu 似乎无法访问。
我不确定这是为什么?在线文档似乎表明 PopupMenu 在 TCustomControl 中可用?然而__property TPopupMenu* PopupMenu = {read=FPopupMenu, write=SetPopupMenu};
是protected
我重新定义public
了自定义控件中的属性但是现在错误是SetPopupMenu
无法访问。SetPopupMenu
未列为protected
。也许private
?我在文档中没有看到它。
这是一个虚拟实现吗?是否像添加TPopupMenu
成员和自己编写SetPopupMenu
函数一样简单?我错过了什么?
解决方案
该PopupMenu
属性protected
在 中TControl
且未在 中提升TCustomControl
。所以你需要将它提升到public
/__published
在你的派生类中,但不要完全重新声明它,这听起来像是你正在尝试做的。
是的,SetPopupMenu()
是private
(in TControl
),因此派生类无法访问。
尝试这个:
class TMyControl : public TCustomControl
{
...
__published:
__property PopupMenu; // <-- that is all you need!
};
protected
对于要在派生控件中公开访问权限的任何其他基本属性也是如此。
推荐阅读
- c# - Unity 3d 场景正在加载/未加载
- python - 在网页上托管 Jupyter Notebook Python 应用程序
- python - 有没有办法抓取使用 python 加载的数据
- python - Django - 带有 2 个参数的 URL 模板标签
- python - 如何将数据帧转换为调用api的字典?
- c# - Rhino 嘲笑 AssertWasCalled 不起作用
- ios - react-native InAppUtils.receiptData 的问题
- arrays - 在 Swift 4 中将 Json 对象转换为数组格式
- kubernetes - 无法访问 Kubernetes 服务 - 连接被拒绝
- tabulator - 无法使用制表符中的 fa 图标隐藏整列