Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_практика_ТРПП.doc
Скачиваний:
14
Добавлен:
02.05.2019
Размер:
808.96 Кб
Скачать

Задание 9

ДОЧЕРНИЕ ФОРМЫ

1) Организовать новый проект (File/New Application). Присвоить форме имя MainForm (свойство Name) и измените ее заголовок на Главная (свойство Caption).

2) Сохранить проект и его форму (File/Save All). Модулю присвоить имя MAIN.PAS, а проекту – FAM.DPR (Свою фамилию).

3) Добавить к проекту второе, дочернее окно (File/New Form), присвоив новой форме имя SecondaryForm (свойство Name) и изменив ее заголовок на Дочерняя (свойство Caption). Сохранить (File/Save) модуль новой формы под именем SECOND.PAS.

4) Активизировать для доступа дочерней формы основную форму Main и в главном меню выберите команду File/Use Unit... . В окне диалога выбрать модуль Second. В результате в секции implementation программного модуля Main появится строка:

uses Second;

5) Оформить команду открытия дочерней формы в виде нажатия кнопки на форме Main. В обработчик нажатия этой кнопки записать команду вызова дочерней формы.

  1. Добавить к проекту третье, дочернее окно About, работающее в модальном режиме и отображающее информацию об авторе проекта. Продумать дизайн формы.

Таблица 9.1 - Управление главной формы дочерними

Вариант

Задание

1, 6, 11,16, 21, 26

Главная открывает обе дочерние формы, закрывает, сворачивает, восстанавливает форму Дочерняя

2, 7, 12, 17, 22, 27

Главная изменяет заголовок (задается в поле Edit главной формы), размеры (плавное изменение размеров) и цвет (выбор из палитры) формы Дочерняя

Продолжение Таблицы 9.1

Вариант

Задание

3, 8, 13, 18, 23, 28

Главная изменяет размеры формы About, которые отображаются в форме Дочерняя

4, 9, 14, 19, 24, 29

Главная открывает обе дочерние формы, закрывает (с запросом на разрешение закрытия окна), сворачивает, восстанавливает форму About

5, 10, 15, 20, 25, 30

Главная плавно изменяет цвет формы About (три ScrollBar: R, G, B), числовые значения которых отображаются в форме Дочерняя

Контрольные вопросы

  1. Определить способы взаимодействия главного и дочернего окон

  2. Как определить назначения новой формы, используя хранилище объектов Delphi.

  3. Определить способы управления из главной формы

Задание 10

Многодокументные (MDI) приложения.

1) Создать новый проект (File/New Application). Дайте форме имя FrameForm (свойство Name) и измените ее заголовок на MDI Application. Установив свойство FormStyle на значение fsMDIForm сделайте форму обрамляющей формой многодокументного приложения.

2) Добавить к проекту дочернюю форму с помощью команды меню File/New Form. Присвоить имя ChildForm и установите ее заголовок MDI Child. Установив свойство FormStyle на значение fsMDIChild сделайте форму дочерней (подчиненной) формой многодокументного приложения.

  1. Сохраните проект и его формы (File/Save All). Присвоить имя проекту - MDIAppl.dpr, модулю обрамляющей формы - MDIFrame.pas, а модулю дочерней - MDIChild.pas.

  2. Замените значение параметра Action, управляющего порядком закрытия окон, с caMinimize (свернуть окно) на caFree (закрыть окно) для реализации полного закрытия дочернего окна в событии OnClose :

procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Action := caFree;

end;

  1. Обеспечить взаимную видимость модулей для организации обращения между обрамляющей и дочерними формами . Для этого из обрамляющей формы FrameForm командой File/Use Unit подключите модуль MDIChild.pas, а из дочерней ChildForm - модуль обрамляющей формы MDIFrame.PAS.

Если обрамляющая и дочерняя имеют собственные меню, то при открытии дочерней формы набор ее меню добавляются к набору меню обрамляющей формы. Порядок образования объединенного меню определяется свойством GroupIndex (групповой номер) компонента TMenuItem:

  • объединенные меню располагаются в порядке возрастания значений свойства GroupIndex;

  • меню дочерней формы заменяют меню главной формы с тем-же значением GroupIndex;

  • группы меню с одинаковым GroupIndex добавляются или заменяются целиком.

  1. Установить на обрамляющей форме компонент MainMenu и двойным щелчком вызовите у него окно Дизайнера Меню. Создайть два меню: File, состоящее из пунктов New, Open, пустой (-), Exit и меню Window, состоящее из пунктов Tile и Cascade.

  2. Установить на дочерней форме компонент MainMenu. В окне Дизайнера Меню с помощью команды Insert From Template... всплывающего меню (щелчок правой кнопки мыши) вставить из шаблона расширенный вариант меню File и меню Edit.

  3. Установить для организации правильного объединения меню форм значения их свойств GroupIndex.

В форме FrameForm File1.GroupIndex = 0 Window1.GroupIndex = 6.

В форме ChildForm File1.GroupIndex = 0 Edit1.GroupIndex = 1.

  1. Запустить приложение. Дочерняя форма открылась автоматически. Внимательно изучить содержимое набора меню. Определить, меню какой формы представлены и объяснить, почему так получилось. Закрыть дочернее окно и также изучить набор меню.

  2. Выбрать «ручной» способ открытия дочерней формы. Для этого в окне настройки параметров проекта (меню Project/Options) на странице Forms перевести пункт ChildForm из списка Auto-Create Forms в список Available Forms:

  3. Описать процедуру открытия новой дочерней формы, вызываемую выбором команды File/New меню обрамляющей формы (обработчик события OnClick пункта New в форме FrameForm:

procedure TFrameForm.New1Click(Sender: TObject);

begin

with TChildForm.Create(Self) do

Caption := Caption + ' ' + IntToStr(Self.MDIChildCount);

end;

Здесь первой строкой вызывается метод создания дочерней формы типа TChildForm; в скобках указано имя владельца этой дочерней формы - Self (сама, т.е. обрамляющая форма). Во второй строке к заголовку дочерней формы добавляется ее номер - количество открытых дочерних форм.

  1. Определить реакцию на выбор пункта меню File/New для дочерних форм, т.к. после открытия дочерней формы ее меню File заменит соответствующее меню обрамляющей формы:

procedure TChildForm.New1Click(Sender: TObject);

begin

FrameForm.New1.Click;

end;

  1. Записать в обрамляющей форме в обработчиках выбора пунктов Tile и Cascade меню Window по одной строке Tile; и Cascade; соответственно. Эти методы изменяют расположение дочерних окон.

  2. Установить имя объекта для того, чтобы в меню Window был представлен список имен открытых дочерних окон, отвечающего за этот пункт (Window1), в качестве значения свойства WindowMenu обрамляющего окна.

  3. Определить реакцию на выбор пункта меню File/Close для дочерних форм для примера работы с отдельными дочерними окнами :

procedure TChildForm.Close1Click(Sender: TObject);

begin

with FrameForm do

if ActiveMDIChild <> nil then ActiveMDIChild.Close;

end;

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

  1. Загрузить из Хранилища Объектов (File/New/Project) готовый шаблон MDI-приложения можно просто .

  2. Разместить на дочернем окне редактор Memo и дополнить созданное MDI-приложение следующими пунктами меню:

FrameForm - Window/Set Red Color – окрашивает фон редактора Memo текущего окно в красный цвет.

FrameForm - Window/Minimize all – сворачивает все подчиненные окна (если сразу не получится, посмотрите, как это сделано в шаблоне MDI - приложения).

FrameForm - Window/Restore all – восстанавливает свернутые подчиненные окна.

FrameForm - Window/Close all – закрывает все подчиненные окна.

FrameForm - Window/Table – открывает параллельное окно с информационной таблицей (TStringGrid). В таблице должны быть представлены номер, заголовок, размеры и состояние (свернутое, распахнутое, нормальное) всех подчиненных окон приложения. Любое изменение в массиве подчиненных окон должно одновременно отображаться в таблице (если открыто данное окно).

Контрольные вопросы

  1. Способы организации многодокументальных приложений

  2. Отличие MDI-приложений от SDI-приложений

  3. Свойства TForm для MDI- приложений

  4. Методы расположения дочерних окон