Лабораторная работа №2. Многодокументные MDI-окна

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

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

Многодокументные MDI-окна, это когда главное окно содержит внутри себя несколько подчиненных окон. Дочерние окна не блокируют главное окно и работают независимо друг от друга и область их видимости ограничивается главным окном.

Microsoft не рекомендует использовать эту технологию, она убрала её из MS Word, но тем не менее её продолжают использовать.

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

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

2. Для формы задайте:

·  размер (свойства Height и Width) – 600х800;

·  минимальный размер (параметр Constraints) – 300х400;

·  максимальный размер – 800х1200.

3. Назовите форму MainForm с заголовком MDI окно.

4. Cохраните проект в папку D:\Users\...\Lab2\... . Главное окно сохраните под именем MainUnit, а проект под именем WinMDI.

5. Для того чтобы окно было MDI у формы необходимо изменить свойство FormStyle на fsMDIForm.

6. Создайте на форме панель высотой 60, сделайте, чтобы она выравнивалась по верхнему краю окна. Измените цвет панели.

7. Создайте на форме главной меню с пунктами Окно, О программе и Закрыть. В меню Окно создайте подпункты Дочернее окно и Настройки окна.

8. Создайте вторую форму (команда File / New / Form Delphi). Для формы задайте:

·  размер – 300х400;

·  минимальный размер – 100х200;

·  максимальный размер – 600х1000;

·  имя ChildForm и заголовком Дочернее окно;

НЕ нашли? Не то? Что вы ищете?

·  измените свойство FormStyle на fsMDIChild;

·  измените цвет формы;

·  сохраните окно под именем ChildUnit;

·  создайте графическую кнопку с предопределённым видом Close.

9. Простейшая MDI-приложение готово. Запустите его и посмотрите, как оно работает.

10. В нашем случае программа запускается и сразу создаётся дочернее окно. Сделаем так, что бы окна создавались во время выполнения программы (в режиме runtime).

11. Выполните команду Project / Options. Откроется окно Опции Проекта (рис. 1). В открывшемся окне в левой части выберете Forms.

Рисунок 1 – Окно настроек проекта

Правая часть будет разделена на две части. Слева правой части окна перечислены формы, которые создаются автоматически при запуске проекта. Выделите дочернее окно (ChildForm) и перенесите его в список доступных форм, нажав на кнопку . Нажмите OK.

12. Запустите приложение на выполнение. Посмотрите, что изменилось.

13. В процедуре обработки для меню Дочернее окно напишите код:

ChildForm := TChildForm. Create(Owner);

Для создания объекта используется метод Create.

14. Переменная ChildForm объявлена в модуле дочернего окна. Подключите его к главной форме.

15. Запустите приложение на выполнение. Попробуйте несколько раз выполнить команду Окно / Дочернее окно. Попробуйте закрыть одно из созданных окон.

16. Чтобы дочернее окно закрывалось, необходимо для него создать обработчик события OnClose и в него ввести код:

Action := caFree;

Для MDI-формы по умолчанию для события OnClose, возникающего перед закрытием формы, переменная Action имеет значение caMinimize (окно формы сворачивается). Мы это значение меняем на caFree (форма уничтожается).

17. На дочернем окне разместите многострочный редактор (компонент Memo вкладка Standard). Для редактора задайте размер 80х100 и назовите его ChildMemo.

18. На этом же окне разместите кнопку с заголовком Очистить. Сделайте, что бы по её нажатию удалялось содержимое многострочного редактора (команда Clear).

Рассмотрим несколько полезных свойств и методов формы:

·  ActiveMDIChild – указывает на активное дочернее окно;

·  MDIChildCount – количество дочерних окон;

·  MDIChildren – через это свойство можно получить доступ в любому дочернему окну. Например, к третьему окну – MDIChildren [3];

·  Cascade – выстроить дочерние окна каскадом;

·  Tile – выстроить дочерни окна последовательно друг за другом;

·  Next – следующее дочернее окно;

·  Previous – предыдущее дочернее окно.

19. На главной форме на панели создайте четыре графических кнопки с заголовками Каскадом, Последовательно, Следующее и Предыдущее.

20. Создайте для них рисунки с помощью Paint. Размер рисунка 16х16. Чтобы рисунок разместить на кнопке используется свойство Glyph.

21. Запрограммируйте кнопки, что бы они выполняли соответствующие заголовкам действия с окнами.

22. Создайте третью форму. Для новой формы:

·  задайте размер 250х600;

·  назовите её PropForm и заголовком Настройки дочернего окна;

·  измените цвет формы;

·  сохраните окно под именем PropUnit;

·  создайте графическую кнопку с предопределённым видом Ok, запрограммируйте её, чтобы при её нажатии окно закрывалось.

23. Для формы Настройки дочернего окна:

·  создайте GroupBox (вкладка Standard) с заголовком Свойства текстового редактора;

·  внутри GroupBox разместите три флажка (компонент CheckBox вкладка Standard) с заголовками: Не объёмный вид, Скрыть, Не активный;

·  запрограммируем, чтобы при выборе флажка Не объёмный вид внешний вид редактора на дочернем окне изменялся. В процедуре обработки для флажка введите код:

ChildForm. ChildMemo. Ctl3D := not CheckBox1.Checked ;

Логическое свойство Checked компонента CheckBox определяет стоит в нём галочка или нет, если стоит то True, иначе – False;

·  подключите форму Дочернее окно;

·  запрограммируйте флажки Скрыть и Не активный, чтобы они делали редактор невидимым и неактивным, соответственно;

·  создайте группу переключателей с заголовком Цвет дочернего окна, содержащий название пяти цветов. Сделайте чтобы, при выборе соответствующего цвета Дочернее окно принимала выбранный цвет.

24. Создайте четвёртую форму. Для новой формы:

·  задайте размер 300х300;

·  измените её цвет;

·  назовите её AboutForm с заголовком О программе;

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

·  измените размер, цвет и шрифт надписей;

·  создайте кнопку Ok. Запрограммируйте, чтобы при нажатии кнопки форма закрывалась;

·  сохраните окно под именем AboutUnit.

25. На главной форме запрограммируйте пункты главного меню. Окно Настройки дочернего окна сделайте модальным.