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

Раждането, животът и смъртта на формата

(Превод на статията от сайта на същото име delphi.about.com)

В Windows, основният елемент на потребителския интерфейс - образуват. В Делфи, всеки проект има поне един прозорец - в главния прозорец на кандидатстване. Всички прозорци в Делфи, основани на TForm обект. В тази статия ще разгледаме основните събития участва в "форми на живот".

Форми имат свои собствени свойства, събития и методи, чрез които можете да контролирате външния вид и поведението на формата. Формата е обичайната Delphi компонент, но за разлика от другите, то не присъства в лентата за компонент. Обикновено формата се създава, когато създавате нов проект (File | New Application). В новосъздадената форма е основната форма на приложението.

Допълнителни форми са създадени в проекта чрез File | Нова форма. Има и други начини за създаване на форми, но ние няма да ги разгледа.

Както при всеки друг компонент (обект) форма има свои методи и реагира на събития. Нека да разгледаме някои от тези събития.

OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint.

OnCreate събитие се случва, когато се създава TForm и само веднъж. Когато създадете форма (при Cator Видим собственост е настроена да True), събития ще се случат в следния ред: OnCreate, OnShow, OnActivate, OnPaint. В манипулатор OnCreate събитие, можете да направите каквито и да било действия, инициализация обаче никакви предмети, създадени в OnCreate ще бъдат унищожени в OnDestroy на събитието.

Това събитие се задейства, когато формата става видима. OnShow нарича непосредствено преди формата става видима. Това събитие се случи, ако сте задали Видим собственост на True Формата, или като се обадите Покажи метод или ShowModal на.

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

OnPaint, OnResize Тези събития се наричат ​​всеки път, когато форма е създадена първоначално. В същото OnPaint се нарича всеки път да е необходимо да бъде пребоядисан някаква форма елемент (това събитие може да се използва, ако е необходимо в същото време се възползват от формата е нещо специално).

Когато се създава формата, и всички негови елементи са в очакване на своите събития, за да ги обработи, животът продължава да се образува толкова дълго, колкото някой кликне върху X в горния десен ъгъл на формуляра!

С унищожаването на формата, събитията се генерират в следния ред:

OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy

Ако се опитаме да затворите формата с помощта на метод на затваряне или други налични средства (Alt + F4 или чрез системата на меню), след това събитие се генерира OnCloseQuery. По този начин, това събитие може да се използва за предотвратяване на затваряне на формата. Обикновено OnCloseQuery събитие се използва за да поиска от потребителя - дали той е сигурен (може би в приложението бяха незаписаните данни).

OnCloseQuery манипулатор събитие съдържа променлива CanClose, който определя дали формата може да бъде затворен. Първоначалната стойност на тази променлива е вярно. Въпреки OnCloseQuery манипулатор да зададете CloseQuery за връщане на стойност към False, за да се прекъсне изпълнението на метода Close.

Ако OnCloseQuery върна CanClose = True (което показва, че формата трябва да бъде затворена), тя ще се генерира събитие OnClose. OnClose събитие дава последен шанс да се предотврати затварянето на формата. Процесор параметър за действие OnClose има следните четири възможни стойности: Canone. Форма не е позволено да се затвори. И все пак, ние ще ЛЪЖА в CanClose OnCloseQuery. caHide. Вместо заключение, формата е скрита. caFree. Формата ще бъде затворен и заета й ресурси ще бъдат освободени. caMinimize. Вместо заключение, формата е сведена до минимум. Тази стойност се определя от defaul имат MDI деца форми.

Забележка: Когато един потребител се shutdaunit Windows, ще се нарече OnCloseQuery, вместо OnClose. Ако не искате Windows да си свърши работата, а след това сложи си код в събитието манипулатор OnCloseQuery макар CanClose = False не, това, което е направено тук.

След OnClose метод ще бъдат обработени и матрицата е затворена, тя ще бъде причинено от OnDestroy събитие. На OnCreate обикновено направени действия противоположни на тези, които прави в OnCreate, т.е. унищожаването на създадените обекти и освобождаването на заделената памет.

Estevstvenno че когато основната форма на проекта е затворен, приложението ще бъде завършена.

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