我正在使用
ActnPopup.TPopupActionBar
组件,并且我想添加一些标准操作,如 TFileOpen、TFileOpenWith 等等。问题是如何在运行时将这些操作添加到 TPopupActionBar 中?ActnPopup.TPopupActionBar
组件,并且我想添加一些标准操作,如 TFileOpen、TFileOpenWith 等等。问题是如何在运行时将这些操作添加到 TPopupActionBar 中?我会试着这么做:
procedure TForm1.Button1Click(Sender: TObject);
var
MenuItem: TMenuItem;
Action: TCustomAction;
begin
MenuItem := TMenuItem.Create(PopupActionBar1);
Action := TFileOpen.Create(PopupActionBar1);
Action.Caption := '&Open...';
Action.ShortCut := 16463;
MenuItem.Action := Action;
PopupActionBar1.Items.Add(MenuItem);
MenuItem := TMenuItem.Create(PopupActionBar1);
Action := TFileOpenWith.Create(PopupActionBar1);
Action.Caption := 'Open with...';
MenuItem.Action := Action;
PopupActionBar1.Items.Add(MenuItem);
end;
那么标题和快捷键的值是从哪里来的呢?好问题。这些值来自于操作列表组件编辑器。如果你将标准操作添加到你的操作列表中并查看表单源代码,你就可以获得它们。在那里,你会看到你的操作定义,例如下面这个:
object FileOpen1: TFileOpen
Category = 'File'
Caption = '&Open...'
Hint = 'Open|Opens an existing file'
ImageIndex = 7
ShortCut = 16463
end
对于弹出菜单,您不需要提示(对于弹出菜单项?),类别(适用于操作列表)或ImageIndex(您可以定义自己的图像集,因此索引可能不同),您可以将它们留下。实际上,您可以将所有这些都留下,操作仍将被执行(基于您将使用的类),但是您将没有标题或快捷方式。