„Delphi“ klasės metodų supratimas

Į Delfi, metodas yra procedūra ar funkcija, kuria atliekama objekto operacija. Klasės metodas yra metodas, kuris veikia klasės nuoroda, o ne objekto nuoroda.

Jei skaitysite tarp eilučių, pamatysite, kad klasės metodai yra prieinami net tada, kai dar nesukūrėte klasės (objekto) egzemplioriaus.

Klasės metodai vs. Objekto metodai

Kiekvieną kartą kurdami „Delphi“ komponentas dinamiškai, jūs naudojate klasės metodą: konstruktorius.

Sukurti konstruktorių yra klasės metodas, priešingai nei praktiškai visi kiti metodai, su kuriais susidursite programuodami „Delphi“, kurie yra objektų metodai. Klasės metodas yra klasės metodas, ir atitinkamai, objekto metodas yra metodas, kurį galima pavadinti klasės egzemplioriumi. Tai geriausiai iliustruoja pavyzdys, kurio aiškumo dėka klasės ir objektai pažymėti raudonai:

„myCheckbox“: = „TCheckbox“. Sukurti (nulis);

Čia prieš kvietimą kurti yra klasės pavadinimas ir laikotarpis („TCheckbox“). Tai klasės metodas, paprastai žinomas kaip konstruktorius. Tai yra mechanizmas, kuriuo sukuriami klasės egzemplioriai. Rezultatas yra „TCheckbox“ klasės egzempliorius. Šie egzemplioriai vadinami objektais. Kontrastuokite ankstesnę kodo eilutę taip:

instagram viewer

„myCheckbox“. Perdažyti;

Čia vadinamas „TCheckbox“ objekto (paveldėto iš „TWinControl“) „Repaint“ metodas. Prieš kvietimą perdažyti yra objekto kintamasis ir laikotarpis („myCheckbox“).

Klasės metodai gali būti vadinami be klasės egzemplioriaus (pvz., „TCheckbox“. Sukurti “). Klasių metodus taip pat galima iškviesti tiesiai iš objekto (pvz., „MyCheckbox“. Klasės pavadinimas “). Tačiau objekto metodus gali iškviesti tik klasės egzempliorius (pvz., „MyCheckbox“. Perdažyti “).

Užkulisiuose yra „Sukurti konstruktorių“ skiriant atmintį objektui (ir atliekant bet kokią papildomą inicializaciją, nurodytą „TCheckbox“ ar jos protėvių).

Eksperimentuokite su savo klasės metodais

Pagalvokite apie „AboutBox“ (pasirinktinė „Apie šią paraišką“ forma). Šis kodas naudoja kažką panašaus:

procedūra TfrMain.mnuInfoClick (Siuntėjas: TObject);
prasideda
„AboutBox“: = „TAboutBox“. Sukurti (nulis);
bandyti
Apie „Box“. „ShowModal“;
pagaliau
Apie „Box“. Atleiskite;
galas;
galas;
Tai, be abejo, yra labai gražus būdas atlikti darbą, tačiau norint, kad kodą būtų lengviau perskaityti (ir valdyti), būtų daug efektyviau jį pakeisti į:
procedūra TfrMain.mnuInfoClick (Siuntėjas: TObject);
prasideda
„TAboutBox“. Parodyti save;
galas;
Aukščiau pateikta eilutė vadina „ShowYourself“ klasės metodą, kuris yra „TAboutBox“ klasė. „ShowYourself“ turi būti pažymėtas raktiniu žodžiu „klasė":
klasės procedūra TAboutBox. Parodyti save;
prasideda
„AboutBox“: = „TAboutBox“. Sukurti (nulis);
bandyti
Apie „Box“. „ShowModal“;
pagaliau
Apie „Box“. Atleiskite;
galas;
galas;

Dalykai, kuriuos reikia atsiminti

  • Klasės metodo apibrėžimas turi apimti rezervuotą žodžių klasę prieš procedūrą ar funkcijos raktinį žodį, pradedantį apibrėžimą.
  • „AboutBox“ forma nėra automatiškai sukuriama (projekto parinktys).
  • Įdėkite „AboutBox“ į pagrindinės formos naudojimo sąlygą.
  • Nepamirškite deklaruoti procedūros „AboutBox“ įrenginio sąsajos (viešojoje) dalyje.