Ral*_*ach 17 delphi contextmenu
有一个弹出菜单附加到表单上的几个组件(按钮,但也有TCharts之类的东西),我想知道哪个组件被右键单击以首先启动弹出菜单.
click方法的Sender参数只指向TMenuItem,它是弹出菜单(或父级菜单项)的父级.
我如何获得原始组件?
Sch*_*Ltd 10
您可以在PopupMenu的TMenuItem的click事件中获取调用者组件
Caller := ((Sender as TMenuItem).GetParentMenu as TPopupMenu).PopupComponent;
Run Code Online (Sandbox Code Playgroud)
PopupMenu的示例,它分配给多个列表框并解决导出到文件功能:
procedure TForm1.mniExportFileClick(Sender: TObject);
var Caller: TObject;
begin
if SaveTextFileDialog1.Execute then
begin
Caller := ((Sender as TMenuItem).GetParentMenu as TPopupMenu).PopupComponent;
(Caller as TListBox).Items.
SaveToFile(SaveTextFileDialog1.FileName,
StandardEncodingFromName(
SaveTextFileDialog1.Encodings[SaveTextFileDialog1.EncodingIndex]));
end;
end;
Run Code Online (Sandbox Code Playgroud)