应该足够简单,但我看不到。

您可以找到右键单击以显示弹出菜单的组件,其中包含:

PopupMenu1.PopupComponent


但是如何找到包含TMenuItem的弹出菜单,而该菜单又是在该菜单上单击的?

将问题简化为一个示例:

我有一系列标签,每个标签都有不同的标题,还有一个弹出菜单,该菜单分配给每个标签的PopupMenu属性。

当有人右键单击标签之一并弹出菜单时,然后单击MenuItem1,我要编写代码:

procedure TForm1.MenuItem1Click(Sender: TObject);

begin
MsgBox (Format ('The label right-clicked has the caption %', [xxxx.Caption ])) ;
end ;


xxxx应该是什么?

已实施的答案

感谢两位受访者。我最终得到的是:

procedure TForm1.MenuItem1Click(Sender: TObject);

var
    AParentMenu : TMenu ;
    AComponent  : TComponent ;
    ALabel      : TLabel ;

begin
AParentMenu := TMenuItem (Sender).GetParentMenu ;
AComponent  := TPopupMenu (AParentMenu).PopupComponent ;
ALabel      := TLabel (AComponent) ;
MsgBox (Format ('The label right-clicked has the caption %', [ALabel.Caption ])) ;
end ;


这也询问了涉及哪个TMenuItem,因此给了我一段代码,我可以通过较少的修改将它们放到其他OnClick处理程序中。

最佳答案

我对您的问题有些困惑,但是由于您已经排除了其他所有问题,所以我只能想象您正在寻找TMenuItem.GetParentMenu

08-07 01:09