
- •Введение
- •Элементы пользовательского интерфейса
- •Компоненты TMainMenu и TPopUpMenu
- •Главное меню
- •Дизайнер меню
- •Пункты Меню
- •Разделительные линии
- •Комбинации клавиш
- •Обработка команд меню
- •Пункты-переключатели
- •Взаимоисключающие переключатели
- •Недоступные пункты меню
- •Контекстное меню
- •Значки в пунктах меню.
- •Компонент TImageList
- •Строка состояния
- •Создание строки состояния
- •Подсказки в строке состояния. Всплывающие подсказки.
- •Стандартные окна диалогов
- •Компоненты TOpenDialog и TSaveDialog
- •Задания к лабораторной работе
- •Вопросы к лабораторной работе
- •Справочные таблицы
- •Приложение А

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Рисунок 12 – Свойства компонента mitNew в инспекторе обьектов
Разделительные линии
Логически связанные между собой команды принято отделять от других команд горизонтальной линией. Например, пункт «Выход» принято отделять от остальных (рисунок 13).
Вставьте в меню новый пункт и запишите в значении свойства Caption символ минуса (-).
Рисунок 13 – Разделительная линия в меню
Среда Delphi «знает», что одиночный символ минуса в имени пункта меню означает разделитель и нарисует для пункта горизонтальную линию.
Комбинации клавиш
Некоторым пунктам меню назначают комбинации клавиш (ShortCut), чтобы выполнять команды, не открывая меню. Они ускоряют работу с приложением и популярны среди опытных пользователей. Названия комбинаций клавиш отображаются справа от текста

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
соответствующих пунктов. Например, во многих программах команде меню Файл | Открыть... назначается комбинация клавиш Ctrl+O.
Чтобы назначить пункту меню комбинацию клавиш, активизируйте пункт в дизайнере меню, перейдите к окну свойств и выберите в списке значений свойства ShortCut требуемую комбинацию клавиш. Если ее там нет, то введите название комбинации клавиш самостоятельно. Задайте следующие комбинации клавиш: для пункта меню «Открыть» – Ctrl+O, для пункта «Выход» Alt+X (рисунок 14).
Обратите внимание, что, что среда Delphi не отслеживает дублирование одной и той же комбинации клавиш для нескольких пунктов меню, за это отвечает программист.
Рисунок 14 – Задание комбинация клавиш для пункта меню
Обработка команд меню
В первом приближении меню готово осталось только задать реакцию меню на действия пользователя. Реализуем закрытие формы по команде «Выход». Решение этой задачи сводится к обработке события OnClick компонента mitExit. Это событие возникает при выборе пользователем в меню пункта«Выход».
Активизируйте любым способом пункт меню «Выход» и выберите в окне свойств вкладку Events. Теперь создайте обработчик события, сделав двойной щелчок мышью на значении события OnClick.. Обработка команды «Выход» сводится к вызову метода Close, закрывающего форму.
procedure TfrmEditor.mitExitClick(Sender: TObject); begin
Close;
end;
Совет: Создать обработчик события OnClick можно также просто двойным щелчком на нужном пункте меню.
Подключение меню к форме выполняется с помощью свойства формы Menu. Оно, как правило, уже содержит идентификатор разработанного меню MainMenu, поэтому в данном случае для работы меню больше ничего не нужно.
Выполните компиляцию и запустите проект. На экране появится форма со строкой меню под заголовком. Выбор в меню любой команды кроме «Выход» безрезультатен. По команде «Выход» окно закроется, и приложение завершится (рисунок 15).

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Рисунок 15 – Проверка работы команды «Выход»
Пока наша программа полностью не закончена, создадим «заглушки» для остальных пунктов меню, для чего добавим обработчики событий к оставшимся пунктам меню. Создайте обработчик события OnClick (см. Листинг 1) для любого из оставшихся пунктов меню, например для пункта «Новый».
Листинг 1
procedure TfrmEditor.mitNewClick(Sender: TObject); begin
MessageBox(Handle,
PChar('Активирован пункт меню '+(Sender as TMenuItem).Caption), 'Сообщение', MB_OK or MB_ICONWARNING);
end;
Поясним код приведенный в Листинге 1. В параметре Sender в обработчик команды меню передается пункт меню, для которого он был вызван. Приводя тип TObject с помощью оператора as к типу TMenuItem получаем доступ к свойству Caption компонента TMenuItem. Для вывода окна с сообщением будем использовать функцию MessageВох, рассмотренную в предыдущей лабораторной работе. Так как в качестве параметров функция MessageBox требует строки PChar, а свойство Caption имеет тип String, то выполняется приведение типов с помощью оператора PChar. В результате при выборе пункта меню будет появляться окно сообщения, показанное на рисунке 16.
Рисунок 16 – Вид окна сообщения
Назначьте данный обработчик события (mitNewClick) оставшимся пунктам меню mitOpen, mitSave, mitSaveAs, выбрав его на вкладке Events инспектора объектов для каждого компонента.
Совет: Если необходимо установить одинаковое значение одноименных свойств или обработчиков событий у нескольких компонентов, то можно выделить их в дизайнере форм удерживая клавишу Shift (или дереве объектов удерживая клавишу Ctrl), а затем

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
установить соответствующие значения свойств или обработчиков событий. При этом
вокне инспектора объектов произойдут следующие изменения:
−вместо имени активного компонента будет показано общее количество выделенных компонентов;
−в списке свойств останутся только общие для выделенных компонентов свойства и события;
−свойства и события, которые у выделенных компонентов имеют разные значения, окажутся пустыми.
Запустите программу на выполнение и проверьте, что все работает правильно.
Пункты-переключатели
Во многих программах существуют пункты меню, которые работают как переключатели. Часто с помощью пунктов меню переключателей организуют управление внешним видом программы. Например, удобно сделать пункты меню, отвечающие за отображение панели инструментов и строки состояния. Установка флажка щелчком пункта-переключателя показывает панель инструментов (или строку состояния), а снятие флажка – прячет. Рассмотрим, как программируется такое поведение.
В строке главного меню создайте выпадающее меню «Вид» (mitView) с пунктами
«Панель инструментов» (mitToolBarVisible) и «Строка состояния»
(mitStatusBarVisible). Установите в последних двух пунктах свойство Checked в значение True. В пунктах меню появятся метки (рисунок 16).
Рисунок 17 – Пункты-переключатели в меню
В ответ на выбор пользователем пунктов «Панель инструментов» и «Строка состояния» необходимо переключать флажок для чего необходимо создать следующие обработчики событий OnClick для соответствующих пунктов меню.
Листинг 2
procedure TfrmEditor.mitStatusBarVisibleClick(Sender: TObject); begin
mitStatusBarVisible.Checked:=not mitStatusBarVisible.Checked; end;
procedure TfrmEditor.mitToolbarVisibleClick(Sender: TObject); begin