procedure TfrMain. CreateChildForm
# 40; const childName. string # 41; ;
var Child: TfrChild;
Child: = TfrChild. Create # 40; Application # 41; ;
Child. Caption: = childName;
Даний код створює одну дочірню форму з заголовком childName.
Не забудьте, що цей код знаходиться розділі "uses uchild".
На закриті не мінімізувати!
Закриття дочірнього вікна в MDI додатку всього навсього мінімізує його в клієнтської області батьківського вікна. Тому ми повинні забезпечити процедуру OnClose, і встановити параметр Action в caFree:
procedure TfrChild. FormClose
# 40; Sender: TObject; var Action: TCloseAction # 41; ;
Зверніть увагу, що якщо форма є дочірньою формою MDI, і її властивість BorderIcons встановлено в biMinimize (за замовчуванням), то знову ж таки за замовчуванням параметр Action встановлений в caMinimize. Якщо ж в дочірньої формі MDI немає цих установок, то за замовчуванням Action встановлений як caNone, що означає, що при закритті форми нічого не трапиться.
MDI батьківське меню
Кожне MDI програма має мати основне меню з (якщо більше нічого немає), опцією вирівнювання вікон. Оскільки ми попередньо перемістили дочірню форму з Авто-створюваних (Auto-create) в Доступні (Available) форми, то нам потрібен буде код, який (пункт меню) буде створювати дочірні форми.
Для створення дочірніх вікон в нашому додатку буде використовуватися пункт меню "New child". Друге меню (Window) буде використовуватися для вирівнювання дочірніх віконець всередині батьківського вікна-форми.
. Створити і відобразити
У висновку нам необхідно зробити обробник для пункту меню "New child". При натисканні на пунк меню File | New Child нашого застосування, буде викликатися процедура NewChild1Click яка в свою чергу буде викликати процедуру CreateChildForm (наведену вище), для створення (наступного) примірника форми frChild.
procedure TfrMain. NewChild1Click # 40; Sender: TObject # 41; ;
CreateChildForm # 40; 'Child' + IntToStr # 40; MDIChildCount +1 # 41; # 41; ;
Щойно створена дочірня форма буде мати заголовок у вигляді "Child x", де x являє кількість дочірніх форм всередині MDI форми, як описано нижче.
Закрити все
При роботі з додатком, які мають багатодокументний інтерфейс, завжди необхідно мати процедуру, що закриває все дочірні вікна.
procedure TfrMain. CloseAll1Click # 40; Sender: TObject # 41; ;
for i: = 0 to MdiChildCount - 1 do
MDIChildren # 91; i # 93 ;. Close;
Вам прийдется виконувати перевірку на предмет наявності Незбережені інформації в кожному дочірньому вікні. Для вирішення даного завдання найкраще використовувати обробник події OnCloseQuery.
Властивості MdiChildCount і MDIChildren
MdiChildCount властивість read only, що містить в собі кількість створених дочірніх віконець. Якщо не створено ні одне дочірнє вікно, то це властивість встановлено в 0. Нам прийдеться частенько використовувати MdiChildCount поряд з масивом MDIChildren. Масив MDIChildren містить посилання на об'єкти TForm всіх дочірніх вікон.
Зверніть увагу, що MDIChildCount першого створеного дочірнього вікна дорівнює 1.
Меню Window
Delphi забезпечує більшість команд, які можна помістити всередині пункту меню Window. Далі наведено приклад виклику трьох основних методів для команд, які ми помістили в наш додаток:
procedure TfrMain. Cascade1Click # 40; Sender: TObject # 41; ;
procedure TfrMain. Tile1Click # 40; Sender: TObject # 41; ;
procedure TfrMain. ArrangeAll1Click # 40; Sender: TObject # 41; ;