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

时间:2012-03-12 22:32:43

标签: delphi delphi-xe

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

1 个答案:

答案 0 :(得分: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;

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

object FileOpen1: TFileOpen
  Category = 'File'
  Caption = '&Open...'
  Hint = 'Open|Opens an existing file'
  ImageIndex = 7
  ShortCut = 16463
end

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