Как программно добавить пункт в контекстное меню

Печать
Статьи

Когда Вы разрабатываете приложение, которое имеет всплывающее меню, часто возникает необходимость добавлять пункты меню во время работы приложения. Каждый пункт меню представлен классом TMenuItem. Когда пользователь щелкает на пункте меню, происходит событие OnClick. Вам же нужно перехватить это событие и отреагировать на него.

Динамическое добавление пунктов меню в PopUpMenu

Добавление пунктов меню во время выполнения

Поместите компонент TPopupMenu на форму и задайте ему имя PopupMenu1. Далее запишите следующий код:


type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    N11: TMenuItem;
    N21: TMenuItem;
    N31: TMenuItem;
    N1: TMenuItem;
    btnAddItem: TButton;
    Button2: TButton;
    procedure btnAddItemClick(Sender: TObject);
    procedure PopupItemClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
    i: integer = 1;

implementation

{$R *.dfm}

procedure TForm1.btnAddItemClick(Sender: TObject);
var
  menuItem : TMenuItem;
begin
  menuItem := TMenuItem.Create(PopupMenu1) ;
  menuItem.Caption := 'Новый пункт меню '  + IntToStr(i);
  menuItem.OnClick := PopupItemClick;
  { Назначьте свойству Tag любое целое число
    по которому мы будем его идентифицировать }
  menuItem.Tag := i;
  PopupMenu1.Items.Add(menuItem) ;
  i:= i + 1;
end;

Пример использования:


procedure TForm1.PopupItemClick(Sender: TObject);
begin
  if (Sender as TMenuItem).Tag = 5 then
    ShowMessage('Hello! It''s menu item ');
end;