Я бы попробовал что-то вроде этого:
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(вы можете определить свой собственный набор изображений, таким образом, ваши индексы могут отличаться), вы можете оставить их.Фактически вы можете оставить все это, действие будет выполнено даже в этом случае (в зависимости от класса, который вы будете использовать), но у вас не будет ни заголовка, ни ярлыка.