Как добавить стандартное действие к компоненту ActnPopup.TPopupActionBar во время выполнения? - PullRequest
6 голосов
/ 13 марта 2012

Я использую компонент ActnPopup.TPopupActionBar и хочу добавить пару стандартных действий, таких как TFileOpen , TFileOpenWith и так далее. Вопрос в том, как я могу добавить эти действия во время выполнения к TPopupActionBar?

1 Ответ

6 голосов
/ 13 марта 2012

Я бы попробовал что-то вроде этого:

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

...