Delphi Class Methods begrijpen

In Delphi, een methode is een procedure of functie die een bewerking op een object uitvoert. Een klassemethode is een methode die werkt op een klasseverwijzing in plaats van op een objectreferentie.

Als je tussen de regels door leest, zul je merken dat klassemethoden toegankelijk zijn, zelfs als je geen instantie van de klasse (het object) hebt gemaakt.

Klassemethoden vs. Objectmethoden

Elke keer dat u een Delphi-component dynamisch, gebruikt u een klassemethode: de Constructor.

De Create-constructor is een klassemethode, in tegenstelling tot vrijwel alle andere methoden die u tegenkomt in Delphi-programmering, wat objectmethoden zijn. Een klassemethode is een methode van de klasse, en toepasselijk genoeg is een objectmethode een methode die kan worden aangeroepen door een instantie van de klasse. Dit wordt het best geïllustreerd door een voorbeeld, met klassen en objecten die voor de duidelijkheid rood zijn gemarkeerd:

myCheckbox: = TCheckbox. Creëer (nihil);

Hier wordt de aanroep van Create voorafgegaan door de klassenaam en een punt ("TCheckbox."). Het is een methode van de klas, algemeen bekend als een constructeur. Dit is het mechanisme waarmee instanties van een klasse worden gemaakt. Het resultaat is een exemplaar van de klasse TCheckbox. Deze instanties worden objecten genoemd. Vergelijk de vorige coderegel met het volgende:

instagram viewer

myCheckbox. Herschilderen;

Hier wordt de Repaint-methode van het TCheckbox-object (overgenomen van TWinControl) aangeroepen. De aanroep van Repaint wordt voorafgegaan door de objectvariabele en een punt ("myCheckbox.").

Klassemethoden kunnen worden aangeroepen zonder een instantie van de klasse (bijvoorbeeld 'TCheckbox'. Maak "). Klassemethoden kunnen ook rechtstreeks vanuit een object worden aangeroepen (bijvoorbeeld 'myCheckbox'. Naam van de klasse"). Objectmethoden kunnen echter alleen worden aangeroepen door een instantie van een klasse (bijvoorbeeld 'myCheckbox'. Herschilderen ").

Achter de schermen staat de constructor Create geheugen toewijzen voor het object (en het uitvoeren van eventuele aanvullende initialisatie zoals gespecificeerd door TCheckbox of zijn voorouders).

Experimenteren met uw eigen klassemethoden

Denk aan AboutBox (een aangepast "Over deze toepassing" -formulier). De volgende code gebruikt iets als:

procedure TfrMain.mnuInfoClick (Afzender: TObject);
beginnen
AboutBox: = TAboutBox. Creëer (nihil);
proberen
AboutBox. ShowModal;
Tenslotte
AboutBox. Vrijlating;
einde;
einde;
Dit is natuurlijk een erg leuke manier om het werk te doen, maar om de code gemakkelijker leesbaar te maken (en te beheren), zou het veel efficiënter zijn om deze te wijzigen in:
procedure TfrMain.mnuInfoClick (Afzender: TObject);
beginnen
TAboutBox. Laat jezelf zien;
einde;
De bovenstaande regel roept de "ShowYourself" class methode van de TAboutBox class aan. De "ShowYourself" moet worden gemarkeerd met het trefwoord "klasse":
klasse procedure TAboutBox. Laat jezelf zien;
beginnen
AboutBox: = TAboutBox. Creëer (nihil);
proberen
AboutBox. ShowModal;
Tenslotte
AboutBox. Vrijlating;
einde;
einde;

Dingen om in gedachten te houden

  • De definitie van een klassemethode moet de gereserveerde woordklasse bevatten vóór het procedure- of functietrefwoord dat de definitie start.
  • Het AboutBox-formulier wordt niet automatisch gemaakt (Project-opties).
  • Zet de AboutBox-eenheid in de gebruiksclausule van het hoofdformulier.
  • Vergeet niet om de procedure te declareren in het interface (openbare) deel van de AboutBox-eenheid.
instagram story viewer