5. построение менюМеню является основным элементом диалогового интерфейса современных информационных систем, функционирующих на различных платформах. Оно представляет собой список пунктов, каждый из которых обозначает либо команду, либо подменю более низкого уровня. Delphi обеспечивает построение двух видов меню: главное; всплывающее (контекстное). 5.1. Создание главного меню.
Для создания главного меню в Delphi предусмотрен компонент MainMenu из палитры Standard - . В отличие от ранее рассмотренных компонент, компонент MainMenu является составным компонентом. Это означает, что как самостоятельный компонент он имеет собственные свойства, методы и стандартные события. В то же время каждый из пунктов меню тоже является компонентом, имеющим собственные свойства, методы и события.
Затемненный прямоугольник отображает формируемый в данный момент пункт главного меню или подменю. В этот момент можно вводить с клавиатуры название пункта меню. Ввод нужно завершить нажатием клавиши Enter, что позволит продолжить формирование главного меню – либо путем создания подпунктов текущего подменю, либо следующего пункта главного меню:
Основные свойства пункта главного меню (или подменю): Caption – свойство типа String, содержит наименование пункта меню; BitMap - свойство типа TBitmap, определяет пиктограмму, которая будет размещена слева от наименования пункта меню; по умолчанию имеет значение None – пиктограмма отсутствует; Break – свойство типа TMenuBreak, используется в случаях, когда подменю имеет много пунктов; задает разделение меню на колонки; может принимать следующие значения: mbNone – меню не разделяется на колонки (принимается по умолчанию); mbBreak – пункты меню, начиная с текущего образуют новую колонку, отделенную от предыдущей пробелами; mbBarBreak - пункты меню, начиная с текущего образуют новую колонку, отделенную от предыдущей вертикальной разделительной линией;
AutoCheck - свойство типа Boolean, если оно установлено в True, то щелчок мышкой по пункту меню переводит его в противоположное состояние (например, из состояния «включен» в состояние «выключен»);
ShortCut – свойство, позволяющее задать «горячую»комбинацию клавиш для активизации пункта меню с помощью клавиатуры. Если в свойстве Caption перед названием пункта меню ввести символ &, то этот знак обеспечит быстрый доступ к этому пункту меню с помощью горячей комбинации клавиш Alt – «первая буква». Добавление и удаление пунктов подменю выполняется с помощью контекстного меню для соответствующего пункта меню.
Вставка (добавление) пункта меню выполняется аналогично предыдущей операции: 1) выделить элемент подменю, перед которым нужно вставить добавляемый пункт, 2) щелкнуть по нему правой кнопкой и 3) в появившемся контекстном меню щелкнуть команду Insert. Разделение пунктов подменю на группы выполняется в тех случаях, когда среди относительно большого количества пунктов подменю можно по функциональному признаку выделить отдельные подгруппы. В качестве примера такого выделения можно привести практически любое подменю главного меню редактора MS Word (Вставка, Формат, Таблица и др.).
Создание подменю для пункта подменю. Если для некоторого пункта подменю необходимо, в свою очередь, создать свое подменю, то для этого нужно: 1) выделить элемент подменю, для которого нужно создать подменю, 2) щелкнуть по нему правой кнопкой, 3) в появившемся контекстном меню щелкнуть команду Create SubMenu и далее сформировать необходимые пункты подменю:
В общем случае каждый пункт меню имеет ряд стандартных событий, для которых можно создавать обработчики. Вместе с тем, можно с уверенностью сказать, что самым частым событием для любого пункта меню является щелчок мышкой – OnClick. Обработчик этого события создается очень просто – нужно дважды щелкнуть мышкой по соответствующему пункту меню или подменю. При этом автоматически будет сформирован шаблон-заготовка текста обработчика, в который можно вводить свой текст программы. Пример. Разработать приложение, которое с помощью меню вычисляет наибольшее или наименьшее из двух чисел. Решение. Разместим на пустой форме следующие компоненты: LabeledEdit - для ввода чисел, MainMenu, Label – для вывода результата. Сформируем соответствующие значения свойств Caption компонент LabeledEdit и Label. Создадим главное меню из двух пунктов – Максимум и Минимум.
5.2. Создание контекстного меню. Контекстное меню является очень удобным интерактивным средством для быстрого доступа к командам любого визуального компонента. Оно появляется при нажатии правой кнопки мышки в области визуального компонента, использующего это меню. И содержит в себе команды, применяемые именно к данному компоненту. Для реализации контекстного меню в Delphi используется компонент PopUpMenu из палитры Standard – . Техника создания всплывающего меню в основном такая же, как и при создании главного меню, за исключением одной существенной особенности: Разместить на форме компонент PopUpMenu. Двойным щелчком по компоненте PopUpMenu войти в Конструктор меню и создать в нем необходимые пункты меню. Свойству PopUpMenu компонента, для которого создается контекстное меню, присвоить значение, равное имени соответствующего ему компонента PopUpMenu (обычно это PopUpMenu1):
5.3. Динамическая настройка меню. Большинство из рассмотренных выше операций по созданию и редактированию меню можно выполнять и в процессе выполнения приложения. При этом могут выполняться следующие операции: Создать новое меню. Удалить меню либо его пункты. Заблокировать или разблокировать отдельные пункты меню. Сделать любой пункт меню видимым или невидимым. Добавить новый пункт меню. Переключать форму с одного главного меню на другое. Осуществлять объединение двух пунктов меню. Для добавления пункта меню используются методы Add и Insert, например: Procedure Form1.mnuItemAddClick (Sender:TSender); Var NewItem: TmenuItem; Begin NewItem:= TmenuItem.Create(Self); NewItem.Caption:=’элемент’; MnuFile.Add(NewItem); End; или: Procedure Form1.mnuItemInsertClick (Sender:TSender); Var NewItem: TmenuItem; Begin NewItem:= TmenuItem.Create(Self); NewItem.Caption:=’элемент’; MnuFile.Insert(2, InsertItem); {новый пункт вставляется 2-ым элементом, после 1-ого пункта } End; Для удаления пункта меню используется метод Delete: Procedure Form1.mnuItemDeleteClick (Sender:TSender); Var NewItem: TmenuItem; Begin MnuFile.Delete(2); End; |
| Оглавление| |