Каждый элемент меню является экземпляром класса TMenuItem. Объект MenuItem может либо быть командой, либо содержать меню более низкого уровня. Среди основных свойств класса TMenuItem такие, как:
- Action: TBasicAction – определяет действие, связанное с данной командой;
- Bitmap: TBitmap – определяет значок, отображаемый слева от строки текста команды меню;
- Caption: String– текст команды;
- ShortCut: TShortCut – определяет оперативные клавиши (клавиатурные сокращения) для команд меню;
и др.
В классе TMenuItem содержится ряд методов для работы с меню:
- procedure Add (Item: TMenuItem) – добавляет в конец меню новую команду;
- procedure Clear– удаляет все элементы меню;
- procedure Click– вызывает событие OnClick для данного элемента меню;
- procedure Remove (Item: TMenuItem) – удаляет указанный элемент меню.
В классе TMenuItem определены четыре обработчика событий. Один из них – OnClick– используется для задания реакции на выбор команды меню. Остальные предназначены для создания меню, обладающих возможностями, не поддерживаемыми стандартными средствами.
Для создания меню используют специальный редактор, который запускается двойным щелчком на компоненте MainMenu, помещенном на форму, или щелчком на кнопке с многоточием в поле ввода свойства Items этого компонента в Инспекторе объектов.
Чтобы включить в меню новые команды или подпункты меню, надо выбрать с помощью мыши или клавиш перемещения курсора свободный элемент в правой части строки меню или внизу, под названием раздела меню, и ввести текст команды (название раздела или подраздела) в поле ввода свойства Caption Инспектора объектов. Для вставкиновых элементов меню между уже существующими можно использовать команду Insert контекстного меню редактора или клавишу Ins. Удалить элемент меню можно командой Delete контекстного меню или клавишей Del.
При написании текста команды можно использовать служебный символ «&» для назначения командам меню клавиш ускоренного доступа. Клавиша, соответствующая букве, перед которой помещен &, становится клавишей ускоренного доступа, а в тексте команды меню эта буква будет подчеркнута.
Не следует путать клавиши ускоренного доступа с оперативными клавишами (клавиатурными сокращениями). Нажатие на клавишу ускоренного доступа вызывает соответствующую команду только при условии, что меню в момент нажатия имеет фокус ввода. Клавиатурные сокращения не привязаны к состоянию меню и всегда функциональны.
Для задания оперативных клавиш используют свойство ShortCutкласса TMenuItem. В Инспекторе объектов поле ввода этого свойства содержит выпадающий список, в котором предлагается ряд вариантов оперативных клавиш. Комбинация оперативных клавиш, назначенных для команды меню, отображается справа от текста команды.
Для добавления значка к команде меню используют либо свойство ImageIndex, либо свойствоBitmap класса TMenuItem. В редакторе меню значки, добавленные к команде меню, не отображаются, а в меню формы приложения значок показан слева от текста команды меню.
Для задания разделителей в виде горизонтальных линий (чтобы отделить одну группу команд раздела меню от другой) используют обычный способ создания команды, а в свойстве Caption для нее указывают символ «–».
Для повышения эффективности разработки меню можно использовать шаблоны. Для вставки группы команд из шаблона служит команда Insert From Template контекстного меню редактора меню. По этой команде открывается окно диалога, в котором перечислены все определенные на данный момент шаблоны меню.
Чтобы создать подменю, надо установить указатель мыши на нужную команду меню, нажать правую кнопку мыши и в контекстном меню редактора меню выбрать команду Create SubMenu. Дальше – обычно.