Как динамически создавать пункты подменю в PopupMenu
Примерно так:
procedure TForm1.PopupMenu2Popup(Sender: TObject); var mi, msub: TmenuItem;
beginwith (Sender as TPopupMenu) do begin
// Удаляем все пункты меню
// while Items.Count > 0 do Items.delete(0);
// Предыдущий код имел утечку памяти. Коррекция от Andrew Stewart (astewart@Strobes.co.nz)
while Items.Count > 0 do Items[0].Free;
// Создаем обычный пункт "Первый"
mi := TMenuItem.Create(self);
with mi do begin
Caption := 'Первый';
OnClick := MyClick;
end;
Items.Insert(0, mi);
// Создаем подменю "Подменю" c двумя пунктами "Подменю1" и
// "Подменю2"
mi := TMenuItem.Create(self);
with mi do begin
Caption := 'Подменю';
msub := TMenuItem.Create(self);
with msub do begin
Caption := 'Подменю1';
OnClick := MyClick;
end;
Insert(0, msub);
msub := TMenuItem.Create(self);
with msub do begin
Caption := 'Подменю2';
OnClick := MyClick;
end;
Insert(1, msub);
end;
Items.Insert(1, mi);
end;
end;procedure TForm1.MyClick(Sender: TObject); begin beep;
end;
|