【问题标题】:1 popup menu and 2 memo's, which memo is the menu invoked from1 个弹出菜单和 2 个备忘录,备忘录是从中调用的菜单
【发布时间】:2012-05-09 22:43:37
【问题描述】:

我在一个表单上有 2 个备忘录和 1 个 Tpopupmenu 我已将弹出菜单指定为两个备忘录的弹出菜单。弹出菜单分配了几个菜单项,当我右键单击任一备忘录并单击其 onclick 事件中的一个菜单项时,我希望能够知道哪个备忘录是菜单被调用,但无法弄清楚如何找出它是哪个备忘录!

谁能给我一个关于如何检测底层备忘录的指针。

谢谢

科林

【问题讨论】:

    标签: delphi popupmenu memo


    【解决方案1】:

    您可以使用弹出菜单的PopupComponent 属性:

    procedure TForm1.PopupItemClick(Sender: TObject);
    begin
      if PopupMenu1.PopupComponent = Memo1 then
        ..
      else
        ..
    

    【讨论】:

    • 或将PopupComponent 值类型转换为TMemo 指针并根据需要使用它。
    • @RemyLebeau:是的,当前面有is TMemo 检查时,我更喜欢强制转换(+ 分配给本地变量)而不是 if 语句。除非每个备忘录的处理方式应该不同,但在这种情况下,可能会保留两个菜单项。
    • 谢谢,我确实认为它是 PopupComponent 但我使用的是 PopupComponent 项目,这当然是给我弹出菜单。
    • @MarjanVenema:如果您提前确定TPopupMenu 仅分配给TMemo 组件,则不需要is 检查。
    • @RemyLebeau:啊,是的,但是事情发生了变化……然后有人不知道这个限制并将处理程序用于另一个控制……然后繁荣,或者更糟,不是繁荣,而是一种更微妙的效果,不会立即被注意到……然后是几个……之后,报告了一个错误,有人需要花费数小时试图找出它来自哪里……当您将 typeX var 视为 typeY,我更喜欢is 检查手上几乎立即运行时拍打的安全网:-)
    猜你喜欢
    • 2022-11-03
    • 2010-10-27
    • 2013-12-01
    • 2023-01-17
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多