【发布时间】:2012-05-09 22:43:37
【问题描述】:
我在一个表单上有 2 个备忘录和 1 个 Tpopupmenu 我已将弹出菜单指定为两个备忘录的弹出菜单。弹出菜单分配了几个菜单项,当我右键单击任一备忘录并单击其 onclick 事件中的一个菜单项时,我希望能够知道哪个备忘录是菜单被调用,但无法弄清楚如何找出它是哪个备忘录!
谁能给我一个关于如何检测底层备忘录的指针。
谢谢
科林
【问题讨论】:
我在一个表单上有 2 个备忘录和 1 个 Tpopupmenu 我已将弹出菜单指定为两个备忘录的弹出菜单。弹出菜单分配了几个菜单项,当我右键单击任一备忘录并单击其 onclick 事件中的一个菜单项时,我希望能够知道哪个备忘录是菜单被调用,但无法弄清楚如何找出它是哪个备忘录!
谁能给我一个关于如何检测底层备忘录的指针。
谢谢
科林
【问题讨论】:
您可以使用弹出菜单的PopupComponent 属性:
procedure TForm1.PopupItemClick(Sender: TObject);
begin
if PopupMenu1.PopupComponent = Memo1 then
..
else
..
【讨论】:
PopupComponent 值类型转换为TMemo 指针并根据需要使用它。
is TMemo 检查时,我更喜欢强制转换(+ 分配给本地变量)而不是 if 语句。除非每个备忘录的处理方式应该不同,但在这种情况下,可能会保留两个菜单项。
TPopupMenu 仅分配给TMemo 组件,则不需要is 检查。
is 检查手上几乎立即运行时拍打的安全网:-)