Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП (12 MDI).doc
Скачиваний:
1
Добавлен:
11.11.2019
Размер:
100.86 Кб
Скачать

Лекція 12:

Тема: Багатодокументальний інтерфейс (MDI). Поняття MDI. Головна та дочірні форми. Суміщення меню. Способи впорядкування дочірніх форм.

План:

  1. Створення форм

  2. Автоматичне створення форм

  3. Динамічне створення форм

  4. MDI-свойства Tform

  5. Приклад MDI-приложения

Існують два основні стилі інтерфейсів користувача: інтерфейс з одним документом (single-document interface, SDI) і інтерфейс з багатьма документами (multiple-document interface, MDI). Текстовий редактор з інтерфейсом SDI дозволяє відкрити тільки один документ - щоб відкрити інший, слід закрити попередній. Термін MDI (Multiple Document Interface) дослівно означає багатодокументний інтерфейс і описує застосування, здатні завантажити і використовувати одночасні декілька документів або об'єктів. Прикладом такого застосування може служити диспетчер файлів (File Manager).

У застосуванні MDI Ви можете відкрити відразу декілька документів.

Зазвичай MDI-приложения складаються мінімум з двох форм - батьківською і дочерней. Властивість батьківської форми FormStyle встановлена рівним fsMDIForm. Для дочірньої форми установливают стиль fsMDIChild.

Батьківська форма служить контейнером, що містить дочірні форми, які поміщені в клієнтську область і можуть переміщатися, змінювати розміри, мінімізуватися або максимізовуватися. У застосуванні можуть бути дочірні форми різних типів, наприклад одна - для обробки зображень, а інша - для роботи з текстом.

Створення форм

У MDI-приложении, як правило, потрібно виводити декілька екземплярів класів форми. Оскільки кожна форма є об'єктом, вона повинна бути створена перед використанням і звільнена, коли її більше не потребують. Delphi може робити це автоматично, а може надати цю роботу вам

Автоматичне створення форм

За умовчанням при запуску застосування Delphi автоматично створює по одному екземпляру кожного класу форм в проекті і звільняє їх при завершенні програми. Автоматичне створення обробляється кодом, що генерується, Delphi в трьох місцях.

Перше - розділ інтерфейсу у файлі модуля форми.

  Type

  TForm1=class (TForm)

  Private

  {Закриті оголошення.}

  Public

  { Відкриті оголошення.}

  end;

У даному фрагменті коди оголошується клас TForm1.

Другим є місце, в якому описується змінна класу.

Var Form1: tForm1;

Тут описана змінна Form1, вказуюча на екземпляр класу TForm1 і доступна з будь-якого модуля. Зазвичай вона використовується під час роботи програми для управління формою.

Третє місце знаходиться в початковому тексті проекту, доступ до якого можна отримати за допомогою меню View/ Project Source. Цей код виглядає як:

Application.CreateForm(TForm1, Form1);

Процес видалення форм обробляється за допомогою концепції власників об'єктів: коли об'єкт знищується, автоматично знищуються всі об'єкти, якими він володіє. Створена описаним чином форма належить об'єкту Application і знищується при закритті застосування.

Динамічне створення форм

Хоча автоматичне створення форм корисне при розробці SDI-приложений, при створенні MDI-приложении воно, як правило, неприйнятно.

Для створення нового екземпляра форми використовуйте конструктор Create класу форми. Приведений нижче код створює новий екземпляр TForm1 під час роботи програми і встановлює його властивість Caption рівним 'New Form'.

  Form1:= TForm1.Create(Application);

  Form1.Caption:='New Form';

Конструктор Create отримує від вас як параметр нащадка TComponent, який і буде власником форми. Зазвичай як власник виступає Application, щоб всі форми були автоматично закриті після закінчення роботи застосування. Якщо створена форма без власника, тоді закривати і знищувати її доведеться вам. У разі виникнення необроблюваної помилки така форма залишиться в пам'яті, що не говорить про високий професіоналізм програміста...

У приведеному нижче коду Form1 указує тільки на останню створену форму. Якщо вам це не подобається, скористайтеся приведеним нижче кодом - можливо, він точніше відповідає вашим запитам:

with TForm1.Create(Application) do

  Caption:='New Form';

Якщо ви захочете дістати доступ до окремого дочірнього екземпляра класу, використовуйте властивість MDIChildren, що описується в наступному розділі.

MDI-властивості TForm

Об'єкт TForm має декілька властивостей, специфічних для MDI-приложений.