Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_Rab_BD / lab5 / metod5.doc
Скачиваний:
16
Добавлен:
20.04.2015
Размер:
82.94 Кб
Скачать

Главное меню Main Menu:

У всех меню Delphi имеется общий предок – класс TMenu, который, в свою очередь, является потомком класса TComponent. Класс TMenu является родоначальником всех меню и содержит характеристики, определяющие меню как единое целое. Среди них отметим следующие свойства.

Handle – свойство целого типа содержит числовой идентификатор окна меню. Свойство только для чтения.

Items – свойство класса tMenuItem, содержащее элементы нулевого уровня.

Наиболее часто используемым потомком этого класса является класс главных меню TMainMenu. Обычно он располагается в верхней части формы и может содержать выпадающие меню.

Среди характеристик этого меню отметим следующее свойство:

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

Обычно главное меню формируется на стадии проектирования. С этой целью следует сначала поместить компоненту Main Menu из страницы Standart палитры компонент, а затем воспользоваться свойством Items. При активизации мышью этого свойства открывается конструктор меню (работа с ним будет описана ниже). Характеристики элементов меню задаются с помощью инспектора объектов. При необходимости (например, для создания подменю) используется локальное меню конструктора.

Можно создать меню или отдельные его элементы и на стадии выполнения программы. Для этого можно использовать следующие стандартные функции.

NewItem(ACaption, AShortCut, AChecked, AEnabled, AOnClick, hCtx, AName) – функция типа TMenuItem, создающая новый элемент меню – команду с текстом ACaption типа string, клавишами быстрого управления, задаваемыми параметром AShortCut типа TShortCut, отмеченным или неотмеченным состоянием, задаваемым параметром AChecked типа Boolean, возможностью реакции на события от мыши и клавиатуры, задаваемой параметром AEnabled типа Boolean, обработчиком события, задаваемым параметром AOnClick типа TNotifyEvent, номером раздела справочной системы hCtx целого типа, именем AName типа string. Возвращает указатель на созданный элемент меню.

NewLine – функция типа TMenuItem, создающая новый элемент меню – разделительную линию. Возвращает указатель на созданный элемент меню.

NewSubMenu(ACaption, hCtx, AName, Items) – функция типа TMenuItem, создающая новый элемент меню – подменю с текстом ACaption типа string, номером раздела справочной системы hCtx целого типа, именем AName типа string, компонентами следующего уровня, заданными открытым массивом Items типа array of TMenuItem. Возвращает указатель на созданное подменю.

NewMenu(Owner, AName, Items) – функция типа TMainMenu, создающая новое главное меню с именем AName типа string, компонентами нулевого уровня, заданными открытым массивом Items типа array of TMenuItem, и размещая его в компоненте Owner типа TComponent. Возвращает указатель на созданное меню.

Локальное меню Popup Menu:

Если главное меню отождествляется с формой, то локальное меню – с тем или иным элементом управления. У разных элементов управления могут быть разные локальные меню, и наоборот, несколько различных элементов управления (как правило, однотипных) могут иметь одно и то же локальное меню.

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

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

Локальное меню класса TPopupMenu, так же как и главное меню, является потомком класса TMenu. В свою очередь, в классе TPopupMenu вводятся новые характеристики, среди которых отметим следующие свойства:

Alignment – свойство типа TPopupAlignment, которое определяет расположение локального меню относительно курсора мыши.

AutoPopup – свойство логического типа. Если свойство имеет значение True, локальное меню появляется при нажатии правой клавиши мыши, если имеет значение False, меню не появляется (в этом случае следует использовать метод Popup). По умолчанию имеет значение True.

и т.д.

Отметим также одно событие, определяемое в локальном меню:

OnPopup – событие, возникающее при выводе локального меню на экран путем нажатия правой клавиши мыши (если свойство AutoPopup имеет значение True) или вызова метода Popup. Это единственное событие, которое обрабатывает локальное меню.

Следует упомянуть также один метод, о котором уже говорилось выше:

Popup(X, Y) – процедура, выводящая на экран меню, при этом координаты его верхнего левого угла равны X и Y.

На стадии проектирования локальное меню создается также, как и главное меню. В форме размещается компонента Popup Menu из страницы Standart палитры компонент. Далее активизируется его свойство Items и с помощью конструктора меню набирается структура меню. Завершается создание локального меню привязкой его к конкретному элементу управления (элементам управления) через свойство PopupMenu элемента управления.

Для создания локального меню на стадии выполнения программы можно использовать стандартную функцию NewPopupMenu:

NewPopupMenu(Owner, AName, Alignment, AutoPopup, Items) – функция типа TPopupMenu, создающая новое локальное меню с именем AName типа string, выравниванием, задаваемым параметром Alignment типа TPopupAlignment, возможностью вывода меню на экран, определяемой параметром AutoPopup типа Boolean, и компонентами нулевого уровня, заданными открытым массивом Items типа array of TMenuItem, и размещающая его в компоненте Owner типа TComponent. Возвращает указатель на созданное меню.

Для формирования открытого массива Items элементов меню здесь также можно воспользоваться стандартными функциями NewItem, NewLine и NewSubMenu.

Особенности использования меню в многодокументном интерфейсе:

В многодокументном интерфейсе меню младших форм автоматически подключаются к меню главной формы независимо от значений свойства AutoMerge этих меню. Это объединение происходит таким образом, как будто бы значение этого свойства меню младших форм равняется True. Здесь также замена и вставка элементов меню младших форм осуществляется в соответствии с их групповым индексом, определяемым свойством GroupIndex.

Конструктор меню:

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

Окно конструктора меню содержит структуру имеющегося меню или один пустой прямоугольник (если создается новое меню), соответствующий первому создаваемому подменю.

При создании нового главного меню в инспекторе объектов появляется информация, соответствующая новому создаваемому элементу меню, в которой важным в настоящее время является свойство Caption, куда следует поместить название элемента, которое будет отображаться на экране. При вводе этого названия наряду с остальными можно использовать и буквы кириллицы. Перед какой-либо буквой можно поставить символ &, задающий клавишу быстрого перехода. Здесь же можно задать и клавиши быстрого управления, позволяющие выполнять определенную для этого элемента команду. Для названий подменю главного меню клавиши быстрого управления не отображаются, однако выполняют свои функции, хотя вряд ли целесообразно ими в данном случае пользоваться, – проще употребить здесь клавиши быстрого перехода.

После завершения работы с элементом меню элемент получает введенное имя и появляются два других элемента: один – того же уровня (следующее подменю), а другой – следующего уровня (первый элемент подменю). С элементами того же уровня работа происходит аналогично описанной. Работа же с элементами следующего уровня может несколько отличаться от описанной выше. Дело в том, что каждый элемент этого уровня может выполнять одну из трех, ранее описанных, функций.

Для добавления элемента в любом месте меню (за исключением конечных элементов, которые создаются автоматически при прекращении работы с предыдущим элементом) необходимо выделить элемент, перед которым следует поместить новый элемент, и выполнить команду Insert (Поместить) локального меню конструктора. В результате этого появится пустой элемент в соответствующем месте, с которым дальше проводится работа, как указано выше.

Для удаления любого элемента меню или даже группы элементов следует выполнить следующие действия. Сначала нужно выделить удаляемый элемент или элемент, находящийся в вершине структуры удаляемых элементов. После этого можно выполнить одну из следующих команд главного меню Delphi:

Edit|Delete – для удаления элемента (группы элементов).

Edit|Cut – для удаления элемента (группы элементов) и размещения его (их) в буфере (Clipboard).

Удалить элемент (группы элементов) можно также с помощью команды Delete локального меню конструктора.

Все изменения главного меню сразу же отражаются на его виде, появляющемся в форме.

Редактирование уже имеющегося главного меню выполняется аналогичным образом.

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

Завершается работа с конструктором меню закрытием его окна.