应该很简单,但我看不到。
您可以找到右键单击的组件以显示弹出菜单:
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 处理程序。