Ban ben Delphi, minden projektnek van legalább egy ablaka - a program fő ablaka. A Delphi alkalmazás összes ablaka alapul TForm tárgy.
Forma
Objektumok formázása a Delphi alkalmazás alapvető építőelemei, azok a tényleges ablakok, amelyekkel a felhasználó kapcsolatba lép az alkalmazás futtatásakor. Az űrlapoknak megvannak a saját tulajdonságai, eseményei és módszerei, amelyekkel ellenőrizheti megjelenésüket és viselkedésüket. Az űrlap valójában Delphi összetevő, ám más összetevőktől eltérően az űrlap nem jelenik meg az összetevő palettán.
Általában űrlapelemeket hozunk létre egy új alkalmazás indításával (Fájl | Új alkalmazás). Ez az újonnan létrehozott forma alapértelmezés szerint az alkalmazás fő űrlapja - az első, futási időben létrehozott forma.
Megjegyzés: Ha további űrlapot szeretne hozzáadni a Delphi projekthez, válassza a Fájl | Új forma.
Születés
OnCreate
Az OnCreate esemény a TForm első létrehozásakor, azaz csak egyszer indul el. Az űrlap létrehozásáért felelős nyilatkozat a projekt forrásában található (ha az űrlapot automatikusan a projekt készíti). Űrlap létrehozásakor, és a látható tulajdonsága igaz, a következő események a felsorolt sorrendben fordulnak elő: OnCreate, OnShow, OnActivate, OnPaint.
Az OnCreate eseménykezelőt kell használnia például az inicializálási feladatok elvégzéséhez, például karakterlánclisták kiosztására.
Az OnCreate eseményben létrehozott minden objektumot fel kell szabadítani az OnDestroy esemény által.
OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint...
OnShow
Ez az esemény jelzi, hogy az űrlap megjelenik. Az OnShow-t csak akkor hívják meg, mielőtt az űrlap láthatóvá válik. A fő űrlapokon kívül ez az esemény akkor fordul elő, amikor a Visual űrlap tulajdonságot True értékre állítjuk, vagy a Show vagy a ShowModal metódust hívjuk.
OnActivate
Ezt az eseményt akkor hívják, amikor a program aktiválja az űrlapot - azaz amikor az űrlap megkapja a bemeneti fókuszt. Használja ezt az eseményt annak megváltoztatásához, hogy melyik vezérlő ténylegesen fókuszál, ha nem a kívánt.
OnPaint, OnResize
Az olyan eseményeket, mint az OnPaint és az OnResize, mindig az űrlap eredeti létrehozása után hívják, de többször is. Az OnPaint megtörténik, mielőtt az űrlappal bármilyen vezérlőt megfestnének (használja az űrlap speciális festéséhez).
Élet
A forma születése nem olyan érdekes, mint az élet és a halál. Amikor létrehozta az űrlapot, és az összes vezérlő az események kezelésére vár, a program addig fut, amíg valaki meg nem próbálja bezárni az űrlapot!
Halál
Egy eseményvezérelt alkalmazás leáll, ha minden formája le van zárva, és egyetlen kód sem fut. Ha egy rejtett forma továbbra is létezik, amikor az utolsó látható űrlap bezáródik, akkor úgy tűnik, hogy van véget ért (mert egyetlen űrlap sem látható), de valójában addig fut, amíg az összes rejtett forma meg nem jelenik zárva. Gondolj csak egy olyan helyzetre, ahol a fő forma korán elrejtőzik, és minden más forma bezáródik.
... OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy
OnCloseQuery
Amikor megpróbáljuk bezárni az űrlapot a Bezárás módszerrel vagy más módon (Alt + F4), akkor az OnCloseQuery eseményt hívjuk. Így az esemény eseménykezelője az a hely, ahol el lehet fogni az űrlap bezárását, és megakadályozni lehet. Az OnCloseQuery segítségével kérdezzük a felhasználókat, hogy biztosak-e abban, hogy valóban akarják-e az űrlap bezárását.
eljárás TForm1.FormCloseQuery (Feladó: TObject; var CanClose: logikai);
kezdődik
haMessageDlg('Tényleg bezárja ezt az ablakot?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel azután CanClose: = Hamis;
vég;
Az OnCloseQuery eseménykezelő tartalmaz egy CanClose változót, amely meghatározza, hogy az űrlap bezárható-e. Az OnCloseQuery eseménykezelő beállíthatja a CloseQuery értékét Hamisra (a CanClose paraméter segítségével), megszakítva a Bezárás módszert.
OnClose
Ha az OnCloseQuery azt jelzi, hogy az űrlapot le kell zárni, akkor az OnClose eseményt hívják.
Az OnClose esemény egy utolsó esélyt ad nekünk a forma bezárásának megakadályozására. Az OnClose eseménykezelő rendelkezik egy Action paraméterrel, a következő négy lehetséges értékkel:
- Canone. Az űrlapot nem szabad bezárni. Csakúgy, mintha a CanClose-t hamisra állítottuk az OnCloseQuery-ban.
- caHide. Az űrlap bezárása helyett elrejti.
- caFree. Az űrlap bezárt, így a hozzárendelt memóriát Delphi szabadítja fel.
- caMinimize. Az űrlap minimalizált, nem pedig zárt. Ez az MDI gyermek formák alapértelmezett művelete. Amikor a felhasználó leállítja a Windows rendszert, az OnCloseQuery esemény aktiválódik, nem pedig az OnClose esemény. Ha meg akarja akadályozni a Windows leállítását, tegye a kódját az OnCloseQuery eseménykezelőbe, természetesen a CanClose = False ezt nem fogja megtenni.
OnDestroy
Az OnClose módszer feldolgozása és az űrlap bezárása után az OnDestroy eseményt hívják. Használja ezt az eseményt az OnCreate esemény műveleteivel ellentétes műveletekhez. Az OnDestroy felhasználja az űrlappal kapcsolatos objektumok elhelyezésére és a megfelelő memória felszabadítására.
Amikor a projekt fő űrlapja bezárul, az alkalmazás megszűnik.