
- •Программирование пользовательского интерфейса с использованием меню и стандартных диалоговых окон
- •Теоретические сведения
- •Свойства пунктов главного и дополнительных меню
- •Компоненты вызова стандартных диалоговых окон открытия и сохранения файлов
- •Компонент вызова стандартного диалогового окна для выбора цвета
- •Компонент вызова стандартного диалогового окна для выбора шрифта
- •Компонент вызова стандартного диалогового окна для установки параметров принтера
- •Компонент вызова стандартного диалогового окна для настройки параметров вывода документа на принтера
- •Компоненты вызова стандартных диалоговых окон поиска и замены текста
- •Лабораторное задание
- •Порядок выполнения лабораторной работы
- •Требования к отчету
Лабораторная работа №6
Программирование пользовательского интерфейса с использованием меню и стандартных диалоговых окон
Цель работы: научиться разрабатывать программы, с которыми можно взаимодействовать с помощью меню и диалоговых окон.
Продолжительность работы: 4 часа.
Теоретические сведения
Для создания главной формы в меню системы Delphi выбирается команда File|New Application. Значение свойства Name формы можно задать как fmMAINFORM, а значение свойства Caption -Пример интерфейса.
Чтобы включить меню в главную форму, нужно поместить в нее компонент MainMenu, находящийся на странице Standard палитры компонентов, и вызвать конструктор меню, дважды щелкнув на компоненте MainMenu.
Методика построения меню проста. Разработчику всегда доступен пустой пункт меню. Выбрав его при помощи мыши или клавиш управления курсором, в окне Инспектора объектов нужно задать значения свойств Caption (название пункта меню), Name (имя пункта), Shortcut (комбинация клавиш быстрого выбора). Разновидностью клавиш быстрого выбора является акселератор, который набирается как комбинация клавиш Alt и подчеркнутого символа в названии пункта главного меню или только как подчеркнутый символ в названии пункта дополнительного меню. Акселератор задается знаком амперсанда (&) перед символом в названии пункта меню, являющимся значением свойства Caption.
Пункт-разделитель в меню задается символом "минус" (-) в качестве значения свойства Caption. В табл.1 указаны значения свойств пунктов меню, перечисленных на рис.1. Выход из конструктора меню задается двойным щелчком на кнопке вызова системного меню.
Рис.1.
Главное и дополнительные меню
Таблица 1
Свойства пунктов главного и дополнительных меню
Caption |
Name |
Shortcut | |
Регистрация |
mmRegistrate |
| |
Таблицы |
mmTables |
| |
Отчеты |
mmReports |
| |
Справка |
mmHelp |
| |
Житель |
mmEditPerson |
F5 | |
Квартира |
mmEditFlat |
F6 | |
Телефон |
mmEditPhone |
F7 | |
Вид дохода |
mmEditProfit |
F8 | |
- |
mmDelimiter |
| |
Вы&ход |
mmExit |
F10 | |
&Жители |
mmShowPersons |
| |
|
&Квартиры &Телефоны &Виды доходов Входные формы Список жителей Таблица доходов Список видов доходов Этикетки О системе |
mmShowFlats mmShowPhones mmShowProfits mmInitData mmPersonProfits mmProfitsTable mmProfits mmLabels mmAboutSys |
F1 |
Примечание. При выборе значения свойства Name для компонента рекомендуется начинать значение двухсимвольным префиксом, обозначающим тип компонента. Например, fm - для компонента типа Form, mm - MainMenu, sp - SpeedButton, la - Label, bu - Button и т.д.
Чтобы предусмотреть процедуру обработки события, связанного с выбором пункта меню Выход, нужно щелкнуть на пункте меню Выход и в активизированном окне текстового редактора, начиная с позиции, отмеченной курсором, набрать оператор, вызывающий метод Close для главной формы fmMAINFORM. В результате этих действий создается процедура, приведенная на листинге 1. Эта процедура будет вызываться при выборе пункта меню Выход либо при нажатии функциональной клавиши F10 или клавиши х (русская буква “ха”), когда отображается дополнительное меню.
Листинг 1. Процедура обработки события, связанного с выбором пункта меню Выход
procedure TfmMAINFORM.mmExitClick (Sender: Tobject);
begin
Close; {это набрал разработчик}
end;
Система Delphi позволяет создавать всплывающие контекстные меню, возникающие при нажатии пользователем правой кнопки мыши. Для этого в палитре компонентов на страницеStandard имеется компонент TPopupMenu. Он определяет всплывающее контекстное меню, появляющееся на экране при щелчке пользователя правой кнопкой мыши в поле компонента, который связан сконтекстным меню своим свойством PopupMenu.
Проектирование меню производится с помощью конструктора меню, вызываемого двойным щелчком на этом компоненте. Команды контекстного меню конструктора Create Submenu позволяет ввести подменю в выделенный пункт.
Свойство Items содержит массив пунктов меню типа TMenuItem, обладающих своими свойствами, методами, событиями. Свойство Caption обозначает надпись пункта, свойство Name - имя объекта пункта, свойство ShortCut определяет клавиши быстрого доступа к пункту. Свойство Default определяет, является ли данный пункт пунктом по умолчанию своего подменю, т.е. пунктом, выполняемым при двойном щелчке пользователя на родительском пункте. Свойство Break используется в длинных меню, чтобы разбить список пунктов на несколько столбцов. Свойство Checked, установленное в True, указывает, что в пункте меню будет отображаться маркер флажка, показывающий, что данный пункт выбран. Еще одним свойством, позволяющим вводить маркеры в пункты меню, является RadioItem. Это свойство, установленное вTrue, определяет, что данный пункт должен работать в режиме радиокнопки совместно с другими пунктами, имеющими то же значение свойства GroupIndex.
Для каждого пункта могут быть установлены во время проектирования или программно во время выполнения свойства Enabled (доступен) и Visible (видимый).
Начиная с Delphi 4 предусмотрена возможность ввода в пункты меню изображений. За это ответственны свойства пунктов Bitmap и ImageIndex. Первое из них позволяет непосредственно ввести изображение в пункт, выбрав его из указанного файла. Второе позволяет указать индекс изображения, хранящегося во внешнем компоненте TImageList. Указание на этот компонент вы можете задать в свойстве Images компонента TPopupMenu.
Основное событие пункта меню - OnClick, возникающее при щелчке пользователя на пункте или при нажатии "горячих" клавиш и клавиш быстрого доступа.
На странице Dialogs палитры компонентов расположены компоненты, реализующие диалог с пользователем в таких типовых случаях, как выбор имени файла для чтения и записи, выбор цвета и шрифта, поиск и замена текста, настройка принтера и параметров печати. Поместив компонент-диалог в форму, программист должен:
настроить параметры диалога с помощью свойства Optionsи других свойств компонента;
вызвать метод Execute, который показывает диалоговое окно на экране и инициирует взаимодействие с пользователем. МетодExecute является функцией: он возвращает True, если пользователь подтвердил ввод значения (т.е. нажал кнопку ОК в диалоговом окне или клавишуEnter на клавиатуре) иFalse,если он отказался от выбора (т.е. нажал кнопкуCancelв диалоговом окне или клавишуEsc на клавиатуре);
в случае положительного ответа (True) запрограммировать чтение установленных значений из свойств компонента-диалога.Примечание:в диалоговых окнах поиска и замены текста нажатие кнопки подтверждения (Find и Replace соответственно) инициирует событие, которое должна обработать программа.