【问题标题】:Stop VCL Child Controls from Inheriting Parent Popup Menu阻止 VCL 子控件继承父弹出菜单
【发布时间】:2011-02-07 17:16:41
【问题描述】:

我有一个分配给它的 TPopupMenu 的 Delphi 2007 VCL TPanel。面板上有一些 TEdit 控件。编辑继承父面板的弹出菜单。我不想让这个弹出窗口继承,所以编辑将显示默认的 Windows TEdit 弹出菜单,包括复制、剪切、粘贴等,但还没有找到方法。似乎没有“ParentPopupMenu”类型的属性来设置哪些控件从父组件继承它。

【问题讨论】:

    标签: delphi inheritance parent delphi-2007 popupmenu


    【解决方案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 修复,因为我想要最简单的修复,而且我只需要一种形式。
    猜你喜欢
    • 1970-01-01
    • 2016-10-30
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多