Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 2 семестр.doc
Скачиваний:
42
Добавлен:
27.05.2015
Размер:
777.73 Кб
Скачать

6.2. Cоздание главного и контекстного меню

Для создания и изменения меню в процессе разработки приложения используются компоненты MainMenu (главное меню) или РорирМепи (контекстное меню). Далее в Конструкторе меню с использованием команд его контекстного меню добавляют (Insert) и удаляют (Delete) пункты меню, создают подменю (Create Submenu), выбирают меню (Select Menu).

При проектировании главного меню на форме видны компонент MainMenu и соответствующая ему строка меню. Отображаемая строка меню выглядит и ведет себя так же, как и при выполнении программы. Для перехода на этапе проектирования приложения в процедуру обработки события OnClick пункта меню следует выбрать этот пункт.

Контекстное меню РорирМепи содержит команды, влияющие на тот объект, для которого вызвано это меню. Основные _______свойства компонента:

AutoPopup типа Bооlеаn – определяет появление контекстного меню при щелчке правой кнопки мыши и размещении указателя на компоненте, использующем это меню. Если свойство AutoPopup равно True (по умолчанию), то контекстное меню при щелчке мыши появляется автоматически. Если свойство AutoPopup имеет значение False, то появления меню не происходит. Однако в этом случае можно активизировать меню программно, используя метод Popup. Процедура Popup (X, Y: Intеgеr), где X и Y – координаты меню относительно левого верхнего угла экрана монитора, выводит на экран указанное контекстное меню, например, PopupMenu1.Popup(200, 200);

Alignment типа TPopupAlignment – определяет место появления контекстного меню по отношению к указателю мыши: paLeft – указатель определяет левый верхний край меню (по умолчанию); paCenter – указатель определяет для меню центр по горизонтали; paRiqht – указатель определяет правый верхний край меню.

Чтобы контекстное меню появлялось при щелчке на компоненте, необходимо его свойству РорuрМеnu присвоить в качестве значения имя требуемого контекстного меню.

Пример задания контекстного меню для формы:

Form1.PopupMenu := PopupMenu1;

6.3. Динамическая настройка меню

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

Процедура Add (Item: TMenuItern) добавляет определяемый параметром Item элемент в конец подменю, которое вызвало этот метод. Если подменю не существовало, то оно создается.

Пример добавления пункта меню:

procedure Form1.mnuItemAddClick (Sender: TSender);

var NewItem: TMenuItem

begin

NewItem := TMenuItem.Create (Self); // предварительное создание пункта конструктором

NewItem.Caption := 'Новый элемент'; // заголовок добавляемого пункта

mnuFile.Add(NewItem); // Добавление нового пункта в конец списка команд меню

еnd;

Процедура Insert (Index: Integer; Item: TMenuItem) добавляет новый пункт меню на указанное положение. Параметр Index определяет позицию в массиве элементов меню, на которую вставляется новый пункт. Если значение параметра Index выходит за пределы диапазона то возникает ошибка.

Процедура Delete (Index: Integer) удаляет указанный пункт меню. Если удаляемый пункт имеет подпункты, то они также удаляются.

Пример удаления пункта меню:

procedure Form1.mnuItemDeleteClick(Sender :TSender);

begin

if mnuFile.Items[2].Caption = 'Второй элемент' then mnuFile.Delete(2);

end;

Удаляемый пункт имеет заголовок ‘Второй элемент’ и находится на второй позиции.

Предварительно проверяется, действительно ли удаляется пункт с нужным названием.

Форма может иметь более одного главного меню. Это используется, например, в случае, когда одно из них содержит заголовки на английском языке, а другое – на русском. Для реализации такой возможности на форму помещают два компонента MainMenu и подготавливают соответствующие меню. После этого при выполнении программы возможно подключение к форме любого из этих меню, используя свойство Меnu формы.

Пример переключения между двумя главными меню:

if Form1.Menu = EnglishMenu

then Form1.Menu := RussianMenu

else Form1.Menu := EnglishMenu;