阻止 VCL 子控件继承父弹出菜单
Posted
技术标签:
【中文标题】阻止 VCL 子控件继承父弹出菜单【英文标题】:Stop VCL Child Controls from Inheriting Parent Popup Menu 【发布时间】:2011-02-07 17:16:41 【问题描述】:我有一个分配给它的 TPopupMenu 的 Delphi 2007 VCL TPanel。面板上有一些 TEdit 控件。编辑继承父面板的弹出菜单。我不想让这个弹出窗口继承,所以编辑将显示默认的 Windows TEdit 弹出菜单,包括复制、剪切、粘贴等,但还没有找到方法。似乎没有“ParentPopupMenu”类型的属性来设置哪些控件从父组件继承它。
【问题讨论】:
【参考方案1】:尝试将 PopupMenu 的 AutoPopup 属性设置为 False,然后在需要时手动 Popup() 菜单,就像在 TPanel 的 OnContextMenu 事件中一样。
【讨论】:
谢谢,这个 OnContextPopup 代码似乎可以工作: var Control: TControl;开始控制 := FindVCLWindow(Mouse.CursorPos) ;如果 Control = MyPanel 然后开始 MyMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);处理:=真;结尾;结束;【参考方案2】:这是QC#54286: Parent-PopupMenu overrides standard context menu。 Andreas Hausladen 的 VCL Fix Pack 修复了该问题,使其按您期望的方式运行。
【讨论】:
感谢您的链接。很高兴知道我并不孤单认为这是一个错误。希望 Embarcadero 最终会同意。我决定使用 AutoPopup 修复,因为我想要最简单的修复,而且我只需要一种形式。以上是关于阻止 VCL 子控件继承父弹出菜单的主要内容,如果未能解决你的问题,请参考以下文章