我正在使用ActnPopup.TPopupActionBar
组件,我想添加一些标准操作,例如TFileOpen,TFileOpenWith等。问题是如何在运行时将这些操作添加到TPopupActionBar?
答案 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(你可以定义自己的图像集,因此你的索引可能不同),你可以离开他们。实际上你可以放弃所有这些,即使这样也会执行动作(基于你将使用的类),但你没有标题也没有快捷方式。