Создание приложения MDI
Термин MDI (Multiple Document Interface) дословно означает многодокументный интерфейс и описывает приложения, способные загрузить и использовать одновременно несколько документов или объектов MDI-приложения состоят минимум из двух форм родительской и дочерней Свойство родительской формы FormStyle установлено равным fsMDIForm Для дочерней формы стиль - fsMDIChild
Динамическое создание форм Для создания нового экземпляра формы используется конструктор Create класса формы Приведенный ниже код создает новый экземпляр TForm1 во время работы программы и устанавливает его свойство Caption равным 'New Form Form1:= TForm1.Create(Application); Form1.Caption:= 'New Form';
Конструктор Create получает в качестве параметра потомка TComponent, который и будет владельцем формы Обычно в качестве владельца выступает Application, чтобы все формы были автоматически закрыты по окончании работы приложения При разработке MDI-приложения метод Show не нужен, так как Delphi автоматически показывает все вновь созданные дочерние MDI-формы
Чтобы отказаться от автоматического создания форм, необходимо в диалоговом окне Project\Options удалить классы форм из списка Auto-create forms
Для закрытия окна дочерней формы в его обработчик события OnClose поместить команду: Action := caFree; (по умолчанию дочернее окно сворачивается)
MDI-свойства TForm ActiveMDIChild Это свойство возвращает дочерний объект TForm, имеющий в текущее время фокус ввода (указывает на активное дочернее окно) ActiveMDIChild равен Nil, если нет открытых дочерних форм или свойство FormStyle не равно fsMDIForm ActiveMDIChild.Caption:='Активное дочернее окно'
MDIChildren является массивом объектов TForm, предоставляющих доступ к созданным дочерним формам MDIChildCount возвращает количество элементов в массиве MDIChildren Часто это свойство используется при выполнении какого-либо действия над всеми открытыми дочерними формами Код сворачивания всех дочерних форм: for iCount := MDIChildCount-1 downto 0 do MDIChildren[iCount].WindowState := wsMinimized;
TileMode Свойство, определяющее, как родительская форма размещает дочерние при вызове метода Tile Используются значения tbHorizontal (по умолчанию) и tbVertical для размещения форм по горизонтали и вертикали
WindowMenu Определяет объект TMenuItem (пункт меню), который Delphi будет использовать для вывода списка доступных дочерних форм Для вывода списка TMenuItem должно быть меню верхнего уровня
MDI-методы TForm Arrangelcons выстраивает пиктограммы минимизированных дочерних форм в нижней части родительской формы Cascade располагает дочерние формы каскадом, так что видны все их заголовки Next и Previous переходит от одной дочерней формы к другой Tile выстраивает дочерние формы так, что они не перекрываются