I Delphi, en metode er en prosedyre eller funksjon som utfører en operasjon på et objekt. En klassemetode er en metode som fungerer på en klassereferanse i stedet for en objektreferanse.
Hvis du leser mellom linjene, vil du oppdage at klassemetoder er tilgjengelige selv når du ikke har opprettet en forekomst av klassen (objektet).
Klassemetoder vs. Objektmetoder
Hver gang du oppretter en Delphi-komponent dynamisk, bruker du en klassemetode: konstruktøren.
Create-konstruktøren er en klassemetode, i motsetning til praktisk talt alle andre metoder du vil støte på i Delphi-programmering, som er objektmetoder. En klassemetode er en metode for klassen, og passende nok er en objektmetode en metode som kan kalles av en instans av klassen. Dette illustreres best av et eksempel, med klasser og objekter fremhevet i rødt for å gjøre det klart:
myCheckbox: = TCheckbox. Lag (null);
Her er samtalen til Opprett foran med klassens navn og en periode ("TCheckbox."). Det er en metode i klassen, ofte kjent som en konstruktør. Dette er mekanismen som tilfeller av en klasse blir opprettet. Resultatet er et eksempel på TCheckbox-klassen. Disse tilfellene kalles objekter. Kontrast forrige kodelinje med følgende:
myCheckbox. male;
Her kalles Repaint-metoden til TCheckbox-objektet (arvet fra TWinControl). Oppfordringen til å male på nytt blir ført av objektvariabelen og en periode ("myCheckbox.").
Klassemetoder kan kalles uten en forekomst av klassen (f.eks. "TCheckbox. Skape"). Klassemetoder kan også kalles direkte fra et objekt (f.eks. "MyCheckbox". Klassenavn"). Objektmetoder kan imidlertid bare kalles av en forekomst av en klasse (f.eks. "MyCheckbox". Repaint ").
Bak kulissene er Create konstruktøren tildele minne for objektet (og utføre ytterligere initialisering som spesifisert av TCheckbox eller dets forfedre).
Eksperimentere med dine egne klassemetoder
Tenk på AboutBox (et tilpasset skjema "Om denne applikasjonen"). Følgende kode bruker noe som:
prosedyre TfrMain.mnuInfoClick (avsender: TObject);Dette er selvfølgelig en veldig fin måte å gjøre jobben på, men bare for å gjøre koden enklere å lese (og å administrere), ville det være mye mer effektivt å endre den til:
begynne
AboutBox: = TAboutBox. Lag (null);
prøve
AboutBox. ShowModal;
endelig
AboutBox. Utgivelse;
slutt;
slutt;
prosedyre TfrMain.mnuInfoClick (avsender: TObject);Linjen over kaller "ShowYourself" klassemetoden for T AboutBox-klassen. "ShowYourself" må være merket med nøkkelordet "klasse":
begynne
TAboutBox. Vis deg;
slutt;
klasseprosedyre T AboutBox. Vis deg;
begynne
AboutBox: = T AboutBox. Lag (null);
prøve
AboutBox. ShowModal;
endelig
AboutBox. Utgivelse;
slutt;
slutt;
Ting å huske på
- Definisjonen av en klassemetode må inneholde den reserverte ordklassen før prosedyren eller funksjonsnøkkelordet som starter definisjonen.
- AboutBox-skjemaet opprettes ikke automatisk (Project-Options).
- Sett AboutBox-enheten til bruksklausulen til hovedskjemaet.
- Ikke glem å erklære prosedyren i grensesnitt (offentlig) del av AboutBox-enheten.