ПредишенСледващото

MDI-няколко прозореца на документа в Делфи

В този случай, програмата започва и веднага създава прозорец дете. Между другото, ние все още не са писали някъде, че всеки прозорец трябва да се създаде, те се появяват от някъде. В момента има класове, ние имаме необходимите променливи в раздела Var, но никога не е виждал код, който инициализира тези променливи и ги поставя в случаи на класове. Факт е, че всички форми са в списъка се създава автоматично и инициализация може да намерите в изходния код на проекта (Project меню | Преглед на изходния код (Project | Преглед на изходния код).

В левия панел изброява формите, които ще бъдат създадени автоматично (Auto-създавате форми (Avtosozdavaemye форма)). Маркирайте тук childForm (прозореца ни дете) и да го преместите в списъка с наличните форми (налични форми), като кликнете чрез списъците под формата на един единствен стрелка, сочеща
прав. Сега под формата на дете няма да бъде създаден автоматично. Това действие трябва да се извършва ръчно.

Множествена Документ MDI-прозорец в Делфи, Делфи, Delphi компонент, източник Delphi

Сменете основната форма на панела и го плъзнете до горния ръб на прозореца (Изравнете собственост трябва да се настрои на aiTop). Сега, на панела, задаване на бутона и да му дадете заглавие Създаване (фиг. 9.15).

Когато натиснете този бутон, ние ръчно ще създаде прозорец. За да направите това, ние напиши следния код:

процедура TMainForm.CreateButt # 111; nКликнете върху (подателя: TObj др); започвам

ChildForm: = TChildForm.Create (собственика); приключи;

Ето, ние присвоите променлива указател ChildForm към новата създадена прозореца TChildForm.create. ChildForm променлива декларирана в модул на прозореца на дете под Var:

Стартирайте програмата и се опитайте да кликнете върху няколко пъти бутона Създаване. Трябва да създадете няколко деца прозорци, както е показано на фиг. 9.16.

Но, ако се опитате да затворите някоя от тях, той просто ще се пресече. За да се затвори прозореца, трябва да създадете обработчик на събитието Onciose форма дете и пише в него:

процедура TChildForm.FormClose (Sender: TObject; Var действие: TCloseAction);

Тук променливата действие (операция) е настроен caFree. Тази променлива се предава на манипулатор събитие като втори параметър. Ние променят действието, което е клиент по подразбиране за няколко прозореца на документа за caFree, което прави фигурата унищожена. Както можете да видите, прозореца MDI-заявление по подразбиране е сведена до минимум.

Веднага видя какво други ценности могат да получат променлива действие:

  • .. Canone - не се прави нищо, т.е., на прозореца няма да бъдат затворени;
  • caHide - скриване на прозореца, но тя няма да бъде унищожен, а паметта няма да бъдат освободени. Това е стойността по подразбиране за SDI прозорци. За да затворите, те просто се скрие, но не и унищожени, така че е достатъчно, за да се създаде само веднъж, а след това може да доведе до неограничен брой пъти;
  • caMinimize - не е близо, но само за да се минимизира прозореца. Тази стойност се използва по подразбиране за прозорците на детето в MDI-приложения.

Сега нашата молба е готова.

Както можете да видите, като се използва един и същ тип TForm прозорците, което е много удобно за различни видове приложения. Но трябва да се помни, че TForm може да работи малко по-различно, и да вземе това предвид, когато пишете реални приложения.

И накрая, ние считаме, редица полезни свойства и методи форми, примери за които вече са били прилагани в програмите, посочени по-горе.

  • ActiveMDichild - показва активния прозорец дете.
  • MDichiidCount - цяло число, което показва броя на дъщерните прозорци.
  • MDichiidren - чрез тази функция, можете да получите достъп до всяко дете прозорец.

Например, втората прозореца може да се получи използвайки MDichiidren [2]. Да речем, че трябва да се промени на активната форма дете заглавието. Как мога да разбера

кой да е активен, когато има няколко? Много просто. Създаване на бутон на основната форма и се притиска, пишете на адрес:

процедура TMainForm.ButtonlClick (Sender: TObject); започвам

ActiveMDIChild.Caption: = "Active прозорец docherenee";

В този код, ще се промени с надписите собственост на активната форма. Ако няма активна форма дете (случва, когато формулярите за деца не го правят), а след това на имота

ActiveMDIChild равна на нула.

Нека се опитаме да променим заглавията на всички деца прозорци. За да направите това, стартирайте цикъла от 0 до MDichiidcount и промяна на всички заглавията:

защото: = 0 до MDIChildCount-1 направя MDichiidren.Caption: = "Нов дял";

Има някои интересни техники.

  • Arrangeicons - изграждане на икони на всички деца прозорци.
  • Каскада - за изграждане на каскада от всички деца прозорци.
  • Следваща - следващия прозорец дете.
  • Предишна - предишен прозорец дете.
  • Tile - също изграждане на детето прозорци, само мозайка.

Имайте предвид, че прозорец MDI ние не се показват. Тя самата е показан на екрана, ние просто се обадете на строителя да се създаде нова инстанция. Защо? Погледнете видимата имота в прозореца на дете. Моля, имайте предвид, че тя все още е вярно. Когато този имот е вярно, тогава на прозореца се вижда и трябва да се появи на екрана, а когато ние променяме Formstyle имот да fsMDichild, видимата Имотът е също автоматично се превръща в истина.

Помислете за това нюанс. Ако случайно направите прозореца едно дете, а след това се прехвърли към fsNormal, след стартирането на прозореца веднага се показва на екрана (ако формулярът се създава автоматично в списъка), защото вижда имота остава равен истина.

Помогнете на проекта! Кажи на приятел за този сайт:

Подкрепете проекта - споделете линка, благодаря!