Добавил:
ikot.chulakov@gmail.com Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по Delphi с готовыми программами / Лабораторная работа №18 Создание меню.pdf
Скачиваний:
20
Добавлен:
12.07.2020
Размер:
920.74 Кб
Скачать

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Рисунок 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