如何在运行时向ActnPopup.TPopupActionBar组件添加标准操作?

Sal*_*dor 6 delphi delphi-xe

我正在使用该ActnPopup.TPopupActionBar组件,我想添加一些标准操作,如TFileOpen,TFileOpenWith等.问题是如何在运行时将这些操作添加到TPopupActionBar中?

TLa*_*ama 6

我会尝试这样的事情:

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;
Run Code Online (Sandbox Code Playgroud)

我在哪里获得Caption和ShortCut值?好问题.这些来自动作列表的组件编辑器.如果您将标准操作添加到操作列表并查看表单的源代码,则可以获取它们.在那里,您将看到您的动作定义,如下所示:

object FileOpen1: TFileOpen
  Category = 'File'
  Caption = '&Open...'
  Hint = 'Open|Opens an existing file'
  ImageIndex = 7
  ShortCut = 16463
end
Run Code Online (Sandbox Code Playgroud)

因为对于弹出菜单,你不需要提示(对于弹出菜单项?),类别(用于动作列表)或ImageIndex(你可以定义自己的图像集,因此你的索引可能不同),你可以留下它们.实际上你可以放弃所有这些,即使这样也会执行动作(基于你将要使用的类),但是你没有标题也没有快捷方式.