Narodziny, życie i śmierć formy Delphi

click fraud protection

W Delfy, każdy projekt ma co najmniej jedno okno - główne okno programu. Wszystkie okna aplikacji Delphi są oparte na Obiekt TForm.

Formularz

Twórz obiekty są podstawowymi elementami składowymi aplikacji Delphi, rzeczywistymi oknami, z którymi użytkownik wchodzi w interakcje podczas uruchamiania aplikacji. Formularze mają własne właściwości, zdarzenia i metody, za pomocą których można kontrolować ich wygląd i zachowanie. Formularz jest w rzeczywistości składnikiem Delphi, ale w przeciwieństwie do innych składników, formularz nie pojawia się na palecie składników.

Zwykle tworzymy obiekt formularza, uruchamiając nową aplikację (Plik | Nowa aplikacja). Ten nowo utworzony formularz będzie domyślnie głównym formularzem aplikacji - pierwszym formularzem utworzonym w czasie wykonywania.

Uwaga: Aby dodać dodatkowy formularz do projektu Delphi, wybierz Plik | Nowa forma.

Narodziny

OnCreate
Zdarzenie OnCreate jest uruchamiane przy pierwszym utworzeniu TForm, czyli tylko raz. Instrukcja odpowiedzialna za tworzenie formularza znajduje się w źródle projektu (jeśli formularz jest ustawiony do automatycznego tworzenia przez projekt). Podczas tworzenia formularza, a jego właściwość Visible ma wartość True, występują następujące zdarzenia w podanej kolejności: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

Za pomocą procedury obsługi zdarzeń OnCreate można na przykład wykonywać zadania inicjalizacyjne, takie jak przydzielanie list ciągów.

Wszelkie obiekty utworzone w zdarzeniu OnCreate powinny zostać zwolnione przez zdarzenie OnDestroy.

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

Na wystawie
To zdarzenie oznacza, że ​​formularz jest wyświetlany. Program OnShow jest wywoływany tuż przed wyświetleniem formularza. Oprócz głównych formularzy to zdarzenie ma miejsce, gdy ustawimy właściwość form Visible na True lub wywołamy metodę Show lub ShowModal.

OnActivate
To zdarzenie jest wywoływane, gdy program aktywuje formularz - to znaczy, gdy formularz otrzymuje fokus wejściowy. Użyj tego zdarzenia, aby zmienić, który element sterujący faktycznie zostanie ustawiony, jeśli nie jest pożądany.

OnPaint, OnResize
Zdarzenia takie jak OnPaint i OnResize są zawsze wywoływane po utworzeniu formularza, ale są również wywoływane wielokrotnie. OnPaint występuje przed pomalowaniem formantów formularza (użyj go do specjalnego malowania formularza).

Życie

Narodziny formy nie są tak interesujące, jak może być jej życie i śmierć. Kiedy tworzony jest formularz i wszystkie formanty czekają na obsłużenie zdarzeń, program działa, dopóki ktoś nie spróbuje go zamknąć!

Śmierć

Aplikacja sterowana zdarzeniami przestaje działać, gdy wszystkie jej formularze są zamknięte i nie jest wykonywany żaden kod. Jeśli ukryty formularz nadal istnieje, gdy ostatni widoczny formularz jest zamknięty, prawdopodobnie Twoja aplikacja go zawiera zakończone (ponieważ żadne formularze nie są widoczne), ale w rzeczywistości będą działać, dopóki nie zostaną ukryte wszystkie formularze Zamknięte. Pomyśl tylko o sytuacji, w której główny formularz zostaje wcześnie ukryty, a wszystkie pozostałe formularze są zamknięte.

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

OnCloseQuery
Gdy próbujemy zamknąć formularz za pomocą metody Close lub w inny sposób (Alt + F4), wywoływane jest zdarzenie OnCloseQuery. W związku z tym moduł obsługi zdarzeń dla tego zdarzenia jest miejscem przechwytywania zamknięcia formularza i zapobiegania temu. Korzystamy z OnCloseQuery, aby zapytać użytkowników, czy są pewni, że naprawdę chcą, aby formularz został zamknięty.

procedura TForm1.FormCloseQuery (Sender: TObject; var CanClose: Boolean);

zaczynać

gdybyMessageDlg(„Naprawdę zamknąć to okno?”, MtConfirmation, [mbOk, mbCancel], 0) = mrCancel następnie CanClose: = False;

koniec; 

Moduł obsługi zdarzeń OnCloseQuery zawiera zmienną CanClose, która określa, czy formularz może zostać zamknięty. Moduł obsługi zdarzeń OnCloseQuery może ustawić wartość CloseQuery na False (za pomocą parametru CanClose), przerywając metodę Close.

OnClose
Jeśli OnCloseQuery wskazuje, że formularz powinien zostać zamknięty, wywoływane jest zdarzenie OnClose.

Zdarzenie OnClose daje nam ostatnią szansę, aby zapobiec zamknięciu formularza. Moduł obsługi zdarzeń OnClose ma parametr Action z następującymi czterema możliwymi wartościami:

  • caONone. Formularz nie może zostać zamknięty. Tak jakbyśmy ustawili CanClose na False w OnCloseQuery.
  • caHide. Zamiast zamykać formularz, ukrywasz go.
  • caFree. Formularz jest zamknięty, więc przydzielona mu pamięć jest zwalniana przez Delphi.
  • caMinimalizuj. Formularz jest zminimalizowany, a nie zamknięty. Jest to domyślne działanie dla formularzy potomnych MDI. Gdy użytkownik zamyka system Windows, aktywowane jest zdarzenie OnCloseQuery, a nie OnClose. Jeśli chcesz uniemożliwić zamknięcie systemu Windows, umieść kod w module obsługi zdarzeń OnCloseQuery, oczywiście CanClose = False tego nie zrobi.

OnDestroy
Po przetworzeniu metody OnClose i zamknięciu formularza wywoływane jest zdarzenie OnDestroy. Tego zdarzenia należy użyć do operacji przeciwnych do tych w zdarzeniu OnCreate. OnDestroy służy do cofnięcia przydziału obiektów związanych z formularzem i zwolnienia odpowiedniej pamięci.

Kiedy główny formularz projektu zostanie zamknięty, aplikacja zostanie zakończona.

instagram story viewer