Информация за сървъра на програмистите източници от целия свят
Развитие на MDI приложения в Делфи
(Превод на членове със същото име delphi.about.com)
Всяко заявление MDI има три основни компонента:
One (и само един) MDI форма майка, една или повече (обикновено повече) MDI деца форми, както и главното меню MDI.
Както вече бе споменато, проекта MDI MDI приложения, само един контейнер могат да присъстват (изходен форма) и следва да бъде началната форма.
За да създадете главния прозорец заявление MDI, изпълнете следните стъпки:
- Пусни Delphi и изберете File | New Application. Delphi ще създаде нов проект с формуляр, наречен Form1 (по подразбиране).
- В името имота, възлага frMain името форма.
- Инсталирайте FormStyle имот в fsMDIform.
- Запазване на проекта (име по ваш избор на проекти, например prMDIExample), заедно с uMain.pas в новосъздадената директория.
Както сте забелязали, за да създадете основна форма на MDI, ние сме създали FormStyle имот в fsMDIform. Във всяко приложение, само една форма може да има fsMDIform собственост.
Най-ДИ "деца"
Всеки прозорец майка MDI се нуждае от най-малко едно дете форма. Дете формира MDI - е най-простата форма, с изключение, че те са по-видима част от ограничения размер на основния прозорец. Точно когато се минимизира този прозорец, не е поставен в лентата на задачите, и остава в основния прозорец (само основния прозорец в лентата на задачите става).
Сега нека създадем допълнителни форми, но по-скоро детето. Просто изберете File | Нова форма. Ще бъде създадена нова форма на даден обект, наречен Form1 (по подразбиране). С помощта на инспектор на обекта, да промените името на собствеността в форма Form1 на frChild и FormStyle имота fsMDIChild. Запазете тази форма с съответния файл като uchild.pas. Моля, имайте предвид, че с помощта на този имот, ние можем да се превърне всяка съществуваща форма на формуляра за дете MDI.
Вашата кандидатура може да включва множество MDI детските форми на една и съща или различни вида.
Просто искам да привлека вниманието ви, че заявлението MDI може да включва и най-честата форма, но за разлика от дъщерни дружества, те ще бъдат показани като нормални модални диалогови прозорци (като около кутията, или диалога файл).
Estevstvenno че и майка и прозорците на деца могат да се поставят всички контроли, обаче, отдавна е традиция, която под формата родител е лентата на състоянието (статус бара) и лентата с инструменти (лентата с инструменти), а във формулярите за деца се намират всички други контроли, като например мрежи, изображения, полета за въвеждане, и така нататък. г.
Avtosodanie -> Наличен
Сега нека proizvedom някои променяте нашия проект. Изберете проект | Опции, отваряне на диалоговия прозорец с опции за проекта (Опции на проекта). В левия панел, изберете frChild (Auto-създавате форми ( "Auto-създавате форми")), и да го премести в десния панел (Достъпни форми (Достъпни форми)). Списъкът на десния панел съдържа формата, която се използва от кандидатурата си, но не са създадени автоматично. В заявление MDI, по подразбиране, всички деца форми се генерират автоматично и се показват под формата родител.
Създаване и дисплей.
Както бе споменато по-горе, при нея не се даде възможност за автоматично създаване на деца, прозорци, така че ние трябва да добавите някои код, който ще произвежда създаване frChild формуляра обект. CreateChildForm следната функция трябва да бъде поставен вътре в основната форма (MDI майка) (в допълнение към заглавието в частен интерфейс е):
Този код създава дете форма с childName хедър.
Не забравяйте, че този код е в процес на "използва uchild".
В края не се намали!
Затваряне на прозореца дете при прилагането MDI просто като свежда до минимум в клиентската област на прозореца-майка. Ето защо, ние трябва да гарантира, че процедурата OnClose и задайте параметъра за действие в caFree.
Имайте предвид, че ако формулярът е дъщерно дружество на формата MDI, и неговата собственост е настроена да BorderIcons biMinimize (по подразбиране), след това отново, настройката по подразбиране е настроен на действие caMinimize. Ако във формуляра на детето MDI не разполага с тези настройки, по подразбиране е настроен на действие Canone, което означава, че нищо не се случва, когато затворите формата.
меню родител MDI
Всяко заявление MDI трябва да има в главното меню (ако не друго), опция подравняване прозорец. Както по-рано се премества на дете под формата на генерирано автоматично (Auto-създадат) за наличност (Налично Market) форма, ще се нуждаете от код, който (елемент от менюто) ще създаде дете форми.
Така че, се движат TMainMenu компонент frMain (MDI-майка) и го занесете в следния вид:
За създаване на "Нова дете" елемент от менюто, ще се използват в нашите заявление деца прозорци. Вторият менюто (Window) ще бъде използвана за привеждане в съответствие на деца прозорците във формуляра за прозорец майка.
. Създаване и показване
В заключение, ние трябва да направим манипулатор за елемента от менюто "New детето". Когато кликнете върху менюто File пънк | Нова Дете на нашата молба, ще се нарича процедурата NewChild1Click което от своя страна ще доведе до процедури CreateChildForm (посочено по-горе), за да се създаде (следващо) например форма frChild.
Новосъздадената формата дете ще има заглавие, под формата на "Дете х", където х представлява броя на дъщерните форми вътре формите MDI, както е описано по-долу.
Затваряне на всички
Когато се работи с приложение, което има множество интерфейс документ, винаги трябва да има процедура, обхващаща всички деца прозорци.
Вие ще трябва да извършват проверки за наличие на незаписана информация при всяко дете прозорец. За да се реши този проблем е най-добре да се използва OnCloseQuery манипулатор събитие.
Имоти MdiChildCount и MDIChildren
MdiChildCount само за четене имот, който съдържа редица установени деца прозорци. Ако не е създаден, без прозорец дете, а след това този имот е настроена на 0. Ние ще трябва да се използва често MdiChildCount заедно с MDIChildren масив. MDIChildren масив съдържа препратки към обекти TForm всички деца прозорци.
Имайте предвид, че MDIChildCount първия създаден прозорец дете е 1.
меню Window
Delphi осигурява повечето от командите, които могат да се поставят вътре в менюто Window. По-долу е пример за това призова трите основни методи за команди, които ние поставяме в нашата молба: