На этом шаге мы рассмотрим компонент TPopupMenu
Контекстное меню вызывается в приложении Windows при щелчке правой кнопки мыши и является стандартной возможностью многих программ. Компонент TPopupMenu (Всплывающее меню) предназначен для создания именно таких контекстных меню.
После размещения невизуального компонента ТРорuрМеnu в форме с ним можно работать так же, как и с компонентом ТМаinМеnu. Единственное отличие состоит в том, что в контекстном меню не может быть нескольких разделов верхнего уровня, так как все его пункты располагаются в одном вертикальном столбце. Хотя для каждого пункта меню можно создать подменю, для каждого пункта подменю можно создать свое подменю и т.д.
При проектировании необходимо размещать контекстное меню в том компоненте, для которого оно предназначено, тогда оно будет оправдывать свое название "контекстное меню".
Контекстное меню создается с помощью конструктора меню, процесс создания и свойства контекстного меню ничем не отличаются от создания меню класса TMainMenu.
Рассмотрим пример использования компонентов TMainMenu и ТРорuрМеnu. Добавим к программе компонента TMainMenu компонент ТРорuрМеnu, который будет выполнять те же самые действия, которые описаны в компоненте TMainMenu. На этом примере мы рассмотрим не только как можно использовать компонент TPopupMenu, но и еще раз напомним алгоритм присоединения готовых обработчиков событий к новым событиям.
Для компонента TPopupMenu вызовем Menu Designer, щелкнув по кнопке в правой половине строки Items инспектора объектов. Создадим следующие пункты меню: Новый, Открыть..., Сохранить..., Сохранить как....
Текст пунктов вводится в строке Caption окна инспектора объектов.
Для событий OnClick пунктов Новый, Открыть..., Сохранить..., Сохранить как... уже есть соответствующие обработчики в компоненте TMainMenu. Рассмотрим, как их можно использовать при выборе соответствующих пунктов меню в компоненте TPopupMenu.
Для компонента ТРорuрМеnu укажите (выберите из списка) имена соответствующих процедур, созданных ранее для пунктов компонента TMainMenu. Например, для пункта Сохранить перейдите на вкладку Events и в строке с именем события OnClick выберите имя нужного обработчика из выпадающего списка. Для этого нужно щелкнуть по кнопке со стрелкой вниз и выбрать из списка имя нужного обработчика (в нашем случае это N4Click).
Рис.1. Окно инспектора объектов
Вот, что должно получиться, если вы все сделали правильно.
Рис.2. Использования компонентов TMainMenu и ТРорuрМеnu
Приведем текст программы:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus; type TForm1 = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; PopupMenu1: TPopupMenu; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; N12: TMenuItem; procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N7Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.N2Click(Sender: TObject); begin MessageBox (0,'вы выбрали пункт новый', 'выбор пункта', mb_OK) end; procedure TForm1.N3Click(Sender: TObject); begin MessageBox (0,'вы выбрали пункт открыть', 'выбор пункта', mb_OK) end; procedure TForm1.N4Click(Sender: TObject); begin MessageBox (0,'вы выбрали пункт сохранить', 'выбор пункта', mb_OK) end; procedure TForm1.N5Click(Sender: TObject); begin MessageBox (0,'вы выбрали пункт сохранить как', 'выбор пункта', mb_OK) end; procedure TForm1.N7Click(Sender: TObject); begin Close; end; end.
На следующем шаге мы рассмотрим компонент TLabel