Į Delfi, kiekvienas projektas turi bent vieną langą - pagrindinį programos langą. Visi „Delphi“ programos langai yra pagrįsti TForm objektas.
Forma
Formuokite objektus yra pagrindiniai „Delphi“ programos elementai, faktiniai langai, su kuriais vartotojas sąveikauja paleisdamas programą. Formos turi savo ypatybes, įvykius ir metodus, kuriais galite kontroliuoti jų išvaizdą ir elgesį. Forma iš tikrųjų yra „Delphi“ komponentas, tačiau, skirtingai nuo kitų komponentų, forma nerodoma komponentų paletėje.
Paprastai formos objektą sukuriame paleisdami naują programą (Failas | Nauja programa). Ši naujai sukurta forma pagal nutylėjimą bus pagrindinė programos forma - pirmoji forma, sukurta vykdymo metu.
Pastaba: Norėdami pridėti papildomą formą prie „Delphi“ projekto, pasirinkite Failas | Nauja forma.
Gimdymas
„OnCreate“
„OnCreate“ įvykis suaktyvinamas, kai pirmą kartą sukuriama TForm, tai yra, tik vieną kartą. Pareiškimas, atsakingas už formos sukūrimą, yra projekto šaltinyje (jei forma nustatyta, kad projektą automatiškai sukuria). Kai kuriama forma ir jos matoma nuosavybė yra tiesa, šie įvykiai įvyksta išvardyta tvarka: „OnCreate“, „OnShow“, „OnActivate“, „OnPaint“.
Turėtumėte naudoti „OnCreate“ įvykių valdiklį, kad atliktumėte, pavyzdžiui, inicializacijos darbus, pvz., Paskirstytumėte stygų sąrašus.
Visi „OnCreate“ įvykyje sukurti objektai turėtų būti išlaisvinti iš „OnDestroy“ įvykio.
„OnCreate“ -> „OnShow“ -> „OnActivate“ -> „OnPaint“ -> „OnResize“ -> „OnPaint“...
„OnShow“
Šis įvykis rodo, kad forma yra rodoma. „OnShow“ yra iškviečiamas prieš pat formos matomumui. Be pagrindinių formų, šis įvykis įvyksta, kai nustatome „Visible“ ypatybę ties „True“ arba vadiname „Show“ arba „ShowModal“ metodu.
Įjungti
Šis įvykis vadinamas, kai programa suaktyvina formą - tai yra, kai forma gauna įvesties fokusavimą. Naudokite šį įvykį norėdami pakeisti, kuri valdiklis iš tikrųjų sufokusuoja, jei jis nėra tas, kurio norite.
„OnPaint“, „OnResize“
Įvykiai, tokie kaip „OnPaint“ ir „OnResize“, visada iškviečiami po to, kai forma iš pradžių sukuriama, tačiau taip pat vadinami pakartotinai. „OnPaint“ įvyksta prieš dažant bet kokius formos valdiklius (naudokite ją specialiam formos dažymui).
Gyvenimas
Formos gimimas nėra toks įdomus, koks gali būti jos gyvenimas ir mirtis. Kai jūsų forma bus sukurta ir visi valdikliai laukia įvykių tvarkymo, programa veikia tol, kol kas nors bandys uždaryti formą!
Mirtis
Įvykio pagrįsta programa nustoja veikti, kai visos jos formos yra uždarytos ir joks kodas nevykdomas. Jei paslėpta forma vis dar egzistuoja, kai uždaroma paskutinė matoma forma, jūsų programa atrodo baigėsi (nes formos nėra matomos), bet iš tikrųjų veiks toliau, kol bus visos paslėptos formos uždaryta. Tiesiog pagalvokite apie situaciją, kai pagrindinė forma paslėpta anksti, o visos kitos formos yra uždaromos.
... „OnCloseQuery“ -> „OnClose“ -> „OnDeaktyvate“ -> „OnHide“ -> „OnDestroy“
„OnCloseQuery“
Kai bandome uždaryti formą, naudodami uždarymo metodą arba kitomis priemonėmis (Alt + F4), įvykis „OnCloseQuery“ iškviečiamas. Taigi šio įvykio renginys yra vieta, kur galima uždaryti formą ir užkirsti jai kelią. Mes naudojame „OnCloseQuery“ norėdami paklausti vartotojų, ar jie tikri, kad jie tikrai nori, kad forma būtų uždaryta.
procedūra TForm1.FormCloseQuery (Siuntėjas: TObject; var „CanClose“: Boolean);
prasideda
jei„MessageDlg“('Ar tikrai uždaryti šį langą?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel tada „CanClose“ = klaidinga;
galas;
„OnCloseQuery“ įvykių tvarkytojas turi „CanClose“ kintamąjį, kuris nustato, ar leidžiama uždaryti formą. „OnCloseQuery“ įvykių tvarkytojas gali nustatyti „CloseQuery“ reikšmę „False“ (per parametrą „CanClose“), nutraukdamas uždarymo metodą.
„OnClose“
Jei „OnCloseQuery“ nurodo, kad forma turėtų būti uždaryta, iškviečiamas „OnClose“ įvykis.
„OnClose“ įvykis suteikia mums paskutinę galimybę užkirsti kelią formos uždarymui. „OnClose“ įvykių apdorojimo priemonė turi „Action“ parametrą, turintį šias keturias galimas reikšmes:
- caNone. Formai neleidžiama uždaryti. Lygiai taip, tarsi „OnCloseQuery“ nustatytume „CanClose“ į „False“.
- Slėpti. Užuot uždarę formą, ją paslėpsite.
- nemokama. Forma uždaryta, todėl jai skirtą atmintį išlaisvina Delfis.
- caMinimize. Forma yra sumažinta, o ne uždaryta. Tai yra numatytasis MDI vaiko formų veiksmas. Kai vartotojas išjungia „Windows“, įvyksta „OnCloseQuery“ įvykis, o ne „OnClose“. Jei norite neleisti „Windows“ išjungti, įdėkite kodą į „OnCloseQuery“ įvykių tvarkyklę, žinoma, „CanClose = False“ to nepadarys.
„OnDestroy“
Apdorojus „OnClose“ metodą ir užbaigus formą, iškviečiamas „OnDestroy“ įvykis. Šį įvykį naudokite atlikdami operacijas, priešingas „OnCreate“ įvykiui. „OnDestroy“ yra naudojama objektams, susijusiems su forma, išskaidyti ir atlaisvinti atitinkamą atmintį.
Kai uždaroma pagrindinė projekto forma, paraiška baigiasi.