Лабораторная работа №2. Работа с меню в Delphi

Цель работы: Познакомиться с возможностями Delphi по созданию меню приложения.

Основные понятия:

Практически все Windows-приложения имеют меню. Меню представляет собой список объединённых по функциональному признаку пунктов, каждый из которых обозначает команду или вложенное меню (подменю). Выбор пункта меню равносильно выполнению соответствующей команды или рас­крытию подменю.

Обычно в приложении имеется главное меню и несколько контекстных (всплывающих или локальных) меню. Главное меню предназначено для управления работой всего приложения, каждое из контекстных меню слу­жит для управления отдельным интерфейсным элементом.

Пункт меню или подменю представляет собой объект типа TMenuItem. От­дельный пункт меню (подменю) обычно виден как текстовый заголовок, описывающий назначение пункта меню. Класс TMenuItem слу­жит для представления пунктов главного и контекстных меню. Основные свойства пункта меню:

ú  Bitmap – значок, размещаемый слева от заголовка пункта ме­ню. По умолчанию свойство имеет значение Nil, т. е. значок отсутствует;

ú  Break – признак разделения меню на столбцы. Свойство Break может принимать одно из трех значений:

°  mbNone (по умолчанию) – не разделяется;

°  mbBreak – пункты меню, начиная с текущего, образуют новый столбец;

°  mbBreakBar – пункты меню, начиная с текущего, образуют новый стол­бец, отделённый линией;

ú  Caption – заголовок пункта меню;

ú  Count – количество подпунктов в данном пункте меню;

ú  Подпись:Enabled – логическое свойство, определяющее активность пункта меню (False – пункт меню не активен, True – пункт меню активен);

ú  Items – массив подпунктов текущего пункта меню;

ú  ShortCut – комбинация клавиш для активизации пункта меню.

Основным событием, связанным с пунктом меню, является событие OnClick, возникающее при выборе пункта с помощью клавиатуры или мы­ши.

Главное меню располагается в верхней части формы под её заголовком и содержит наиболее общие команды приложения. По внешнему виду главное меню представляет собой строку (см. рис. 1).

В Delphi глав­ное меню представлено компонентом класса TMainMenu. На форму можно поместить сколько угодно объектов этого класса, но отображаться будет только одно (указанное в свойстве Menu формы).

Контекстное (всплывающее) меню появляется при размещении указателя в форме или в области некоторого элемента управления и нажатии правой кнопки мыши. Контекстное меню содержит команды, влияющие только на тот объект, для которого вызвано это меню.

Контекстное меню в Delphi представлено компонентом класса TPopupMenu. Его ос­новные свойства:

ú  AutoPopup – логическое свойство, определяющее, появляется ли контекстное меню при щелчке правой кнопки мыши и размещении указателя на компонен­те, использующем это меню;

ú  Alignment – определяет место появления контекст­ного меню по отношению к указателю мыши. Свойство Alignment мо­жет принимать значения:

°  paLeft (по умолчанию) – положение указателя определяет положение левого верхнего угла меню;

°  paCenter – положение указателя определяет положение центра меню по горизонтали;

°  paRight – положение указателя определяет положение правого верхнего угла меню.

Подпись:Для того чтобы контекстное меню появлялось при щелчке на компоненте, необходимо его свойству PopupMenu присвоить в качестве значения имя тре­буемого контекстного меню (см. рис. 2).

Компоненты MainMenu и PopupMenu размещаются на странице Standard Палитры компо­нентов. Меню (как подменю главного меню) или контекстного меню можно создавать и изменять как при разработке приложения, так и динамически – непосредственно в ходе вы­полнения приложения.

Для создания и изменения меню в процессе разработки приложения в среде Delphi предназначен Конструктор меню (Menu Designer). Запуск Конструк­тора меню выполняется с помощью соответствующей команды кон­текстного меню компонента MainMenu или PopupMenu, либо с помощью двойного щелчка мыши на компонент (см. рис. 3). Предварительно компонент следует добавить на форму.

Конструктор меню похож на текстовый редактор и предоставляет возмож­ность конструировать меню любого типа. Меню при конструировании имеет тот же вид, что и при выполнении приложения. При работе с Конструктором меню можно использовать команды его контекстного меню, а также перетаскивать мышью (drag-and-drop) пункты меню и подменю.

Рисунок 3 – Конструктор меню

Создание и настройка меню с помощью Конструктора меню выполняются при создании приложения. Кроме того, меню можно создавать или изме­нять динамически при выполнении приложения. Напри­мер, возможно:

°  создать новое меню любого типа или удалить его;

°  заблокировать или разблокировать отдельные пункты;

°  сделать пункт меню видимым или невидимым;

°  добавить или удалить пункт меню;

°  изменить название пункта и др.

Эти возможности обеспечиваются установкой свойствам пунктов меню тре­буемых значений и вызовом соответствующих методов.

Порядок выполнения работы

1.  Запустите Delphi. Создайте новый проект.

2.  Назовите форму MainForm (свойство Name) с заголовком Главная (свойство Caption).

3.  Сохраните проект в папку D:\Users\...\Lab2\.... Форму сохраните под именем MainUnit, а проект под именем MyMenu.

4.  Создайте вторую форму (команда File / New / FormDelphi). Назовите форму NewForm с заголовком Новая. Сохраните её под именем NewUnit.

5.  На форме Новая создайте кнопку с именем Закрыть. Сделайте, чтобы при нажатии на неё окно закрывалось.

6.  Создайте третью форму. Назовите форму AboutForm с заголовком О программе. Сохраните её под именем AboutUnit.

7.  На форме О программе:

·  создайте надписи: своё Ф. И.О., группу, № лабораторной работы, год;

·  измените размер и цвет надписей.

8.  На форме Главная создайте главное меню:

·  в главном меню создайте пункты Окно, О программе и Закрыть;

·  в меню Окно создайте пункты Новое, - , Цвет;

·  для пункта Цвет создайте подменю с командами Желтый, Красный, Синий и Зеленый;

·  меню Окно, О программе и Закрыть сделайте со значком. Для создания значков используйте Paint. Размер рисунков – 16х16. Сохраните их в папку с проектом.

9.  Сделайте так, что бы при выборе меню Закрыть окно закрывалось.

10. Задайте для меню комбинацию клавиш:

·  для пункта Новое Ctrl+N;

·  для меню О программе Ctrl+O;

·  для меню Закрыть Ctrl+E.

11. Сделаем, чтобы при выборе пункта Новое меню Окно появлялась форма Новая, для этого в его процедуру обработки введите код:

NewForm. Show;

12. Сделайте, чтобы при выборе меню О программе открывалось соответствующее окно.

13. Сделайте, чтобы при выборе цвета из меню Окно/ Цвет/… форма Новая принимала соответствующий цвет. Для этого свойству, отвечающему за цвет, необходимо присвоить соответствующую цветовую константу: clYellow, clRed, clBlue и clGreen.

14. На форме Главная создайте две кнопки: первая с заголовком Запретить изменение цвета, вторую – Разрешить изменение цвета.

15. Сделаем, чтобы при нажатии кнопки Запретить изменение цвета пункт Цвет меню Окно делался неактивным. Для этого в процедуру обработки для кнопки введете код:

N6.Enabled := False;

16. Запрограммируйте кнопку Разрешить изменение цвета, чтобы при её нажатии пункт Цвет меню Окно делался активным.

17. На форме Новая для кнопки Закрыть создайте контекстное меню, с помощью которого можно было бы менять заголовок кнопки с русского на английский язык и обратно.

18. Сохраните и запустите проект на выполнение.

19. Закройте Delphi.