Статьи
|
Когда Вы разрабатываете приложение, которое имеет всплывающее меню, часто возникает необходимость добавлять пункты меню во время работы приложения. Каждый пункт меню представлен классом TMenuItem. Когда пользователь щелкает на пункте меню, происходит событие OnClick. Вам же нужно перехватить это событие и отреагировать на него.
Добавление пунктов меню во время выполнения
Поместите компонент 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;
|