Förstå Delphi-klassmetoder

click fraud protection

I Delphi, en metod är en procedur eller funktion som utför en operation på ett objekt. En klassmetod är en metod som fungerar på en klassreferens istället för en objektreferens.

Om du läser mellan raderna kommer du att upptäcka att klassmetoder är tillgängliga även om du inte har skapat en instans av klassen (objektet).

Klassmetoder vs. Objektmetoder

Varje gång du skapar en Delphi-komponent dynamiskt, använder du en klassmetod: konstruktören.

Skapa konstruktören är en klassmetod, till skillnad från praktiskt taget alla andra metoder du kommer att stöta på i Delphi-programmering, som är objektmetoder. En klassmetod är en metod för klassen, och lämpligt nog är en objektmetod en metod som kan kallas av en instans av klassen. Detta illustreras bäst med ett exempel, med klasser och objekt markerade med rött för tydlighet:

myCheckbox: = TCheckbox. Skapa (noll);

Här föregås samtalet till Skapa klassnamnet och en period ("TCheckbox."). Det är en metod i klassen, allmänt känd som en konstruktör. Detta är den mekanism som skapar instanser av en klass. Resultatet är ett exempel på klassen TCheckbox. Dessa fall kallas objekt. Kontrast den föregående kodraden med följande:

instagram viewer

myCheckbox. Måla om;

Här kallas Repaint-metoden för TCheckbox-objektet (ärvt från TWinControl). Samtalet ommålning föregås av objektvariabeln och en period ("myCheckbox.").

Klassmetoder kan kallas utan en instans av klassen (t.ex. "TCheckbox". Skapa"). Klassmetoder kan också kallas direkt från ett objekt (t.ex. "myCheckbox". Klassnamn"). Objektmetoder kan emellertid endast kallas av en instans av en klass (t.ex. "myCheckbox". Måla om").

Bakom kulisserna är Create-konstruktören tilldela minne för objektet (och utföra ytterligare initialisering som specificeras av TCheckbox eller dess förfäder).

Experimentera med dina egna klassmetoder

Tänk på AboutBox (ett anpassat formulär "Om den här applikationen"). Följande kod använder något som:

procedur TfrMain.mnuInfoClick (avsändare: TObject);
Börja
AboutBox: = TAboutBox. Skapa (noll);
Prova
AboutBox. ShowModal;
till sist
AboutBox. Släpp;
slutet;
slutet;
Detta är naturligtvis ett mycket trevligt sätt att göra jobbet, men bara för att göra koden lättare att läsa (och hantera) skulle det vara mycket effektivare att ändra den till:
procedur TfrMain.mnuInfoClick (avsändare: TObject);
Börja
TAboutBox. Visa dig själv;
slutet;
Ovanstående rad kallar klassmetoden "ShowYourself" i klassen T AboutBox. "ShowYourself" måste markeras med nyckelordet "klass":
klassprocedur T AboutBox. Visa dig själv;
Börja
AboutBox: = T AboutBox. Skapa (noll);
Prova
AboutBox. ShowModal;
till sist
AboutBox. Släpp;
slutet;
slutet;

Saker att tänka på

  • Definitionen av en klassmetod måste inkludera den reserverade ordklassen innan proceduren eller det nyckelord som startar definitionen.
  • AboutBox-formuläret skapas inte automatiskt (projektalternativ).
  • Sätt AboutBox-enheten till användningsklausulen för huvudformuläret.
  • Glöm inte att förklara proceduren i gränssnittet (offentlig) del av AboutBox-enheten.
instagram story viewer