Forståelse af Delphi-klassemetoder

I Delphi, en metode er en procedure eller funktion, der udfører en handling på et objekt. En klassemetode er en metode, der fungerer på en klassereference i stedet for en objektreference.

Hvis du læser mellem linjerne, vil du opdage, at klassemetoder er tilgængelige, selvom du ikke har oprettet en forekomst af klassen (objektet).

Klassemetoder vs. Objektmetoder

Hver gang du opretter en Delphi-komponent dynamisk, bruger du en klassemetode: konstruktøren.

Create-konstruktøren er en klassemetode i modsætning til stort set alle andre metoder, du vil støde på i Delphi-programmering, som er objektmetoder. En klassemetode er en metode i klassen, og passende nok er en objektmetode en metode, der kan kaldes af et eksempel på klassen. Dette illustreres bedst med et eksempel med klasser og objekter fremhævet i rødt for klarhed:

myCheckbox: = TCheckbox. Opret (nul);

Her foregår opkaldet til Opret klassens navn og en periode ("TCheckbox."). Det er en metode i klassen, almindeligt kendt som en konstruktør. Dette er den mekanisme, hvormed forekomster af en klasse oprettes. Resultatet er et eksempel på TCheckbox-klassen. Disse tilfælde kaldes objekter. Kontrast den forrige kodelinje med følgende:

instagram viewer

myCheckbox. genfremstille;

Her kaldes Repaint-metoden til TCheckbox-objektet (arvet fra TWinControl). Efter opkaldet til Genmaling foregår objektvariablen og en periode ("myCheckbox.").

Klassemetoder kan kaldes uden en forekomst af klassen (f.eks. "TCheckbox. Skab"). Klassemetoder kan også kaldes direkte fra et objekt (f.eks. "MyCheckbox. Classname "). Objektmetoder kan dog kun kaldes af en forekomst af en klasse (f.eks. "MyCheckbox". Genfremstille ").

Bag kulisserne er Create konstruktøren allokering af hukommelse for objektet (og udføre enhver yderligere initialisering som specificeret af TCheckbox eller dets forfædre).

Eksperimentere med dine egne klassemetoder

Tænk på AboutBox (en brugerdefineret formular "Om denne ansøgning"). Følgende kode bruger noget som:

procedure TfrMain.mnuInfoClick (Afsender: TObject);
begynde
AboutBox: = TAboutBox. Opret (nul);
prøve
AboutBox. ShowModal;
endelig
AboutBox. Frigøre;
ende;
ende;
Dette er selvfølgelig en meget flot måde at udføre arbejdet på, men bare for at gøre koden lettere at læse (og at styre) ville det være meget mere effektivt at ændre den til:
procedure TfrMain.mnuInfoClick (Afsender: TObject);
begynde
TAboutBox. Vise dig selv;
ende;
Ovenstående linje kalder klassemetoden "ShowYourself" i klassen T AboutBox. "ShowYourself" skal markeres med nøgleordet "klasse":
klasse procedure T AboutBox. Vise dig selv;
begynde
AboutBox: = T AboutBox. Opret (nul);
prøve
AboutBox. ShowModal;
endelig
AboutBox. Frigøre;
ende;
ende;

Ting at huske på

  • Definitionen af ​​en klassemetode skal indeholde den reserverede ordklasse inden proceduren eller det funktionstastord, der starter definitionen.
  • AboutBox-formularen oprettes ikke automatisk (Projektindstillinger).
  • Sæt AboutBox-enheden til brugsklausulen i hovedformularen.
  • Glem ikke at erklære proceduren i interface (offentlig) del af AboutBox-enheden.