Mal aus dem Kopf:
Delphi-Quellcode:
type
TOnBestimmteMessage = procedure of object;
TDeineKlasse = class
private
FOnBestimmteMessage: TOnBestimmteMessage;
procedure SetOnBestimmteMessage(const value: TOnBestimmteMessage);
public
procedure MachWas;
property OnBestimmteMessage: TOnBestimmteMessage read FOnBestimmteMessage write SetOnBestimmteMessage;
end;
...
procedure TDeineKlasse.MachWas;
begin
//irgendwelcher Code
if Assigned(FOnBestimmteMessage) then
FOnBestimmteMessage;
//ggf. weiterer Code
end;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
DeineKlasse := TDeineKlasse.Create;
DeineKlasse.OnBestimmteMessage := kompatible_Methode;
end;
Hmm, dass habe ich noch nicht ganz verstanden...
Ich probiers mal:
1.0) Zuerst wird wieder ein eigener Datentyp definiert:
TOnBestimmteMessage = procedure of object;
. Mit diesem kann man nun wieder Variablen deklarieren, die eine Methode darstellen. - Verstanden.
2.1) Als nächstes wird dann wieder eine Variable/ein Feld von diesem Typ (
FOnBestimmteMessage: TOnBestimmteMessage;
) und
2.2) eine Prozedur
procedure SetOnBestimmteMessage(const value: TOnBestimmteMessage);
, die die Variable/das Feld setzen kann, deklariert. - Verstanden.
3.1) Nun wird die Prozedur
procedure MachWas;
und
3.2) die Eigenschaft/Property
property OnBestimmteMessage: TOnBestimmteMessage read FOnBestimmteMessage write SetOnBestimmteMessage;
zum Lesen und Schreiben von außerhalb der Klasse deklariert. - Soweit erst einmal verstanden.
4.0) Jetzt folgt noch die Definition der Methode "MachWas":
Delphi-Quellcode:
procedure TDeineKlasse.MachWas;
begin
//irgendwelcher Code
if Assigned(FOnBestimmteMessage) then
FOnBestimmteMessage;
//ggf. weiterer Code
end;
. - Die Methode "MachWas" für sich allein gesehen, habe ich wohl auch verstanden.
Die Methode prüft, ob die entsprechende Windows Message aufgetreten ist.
Wenn dies der Fall ist, wird die zugewiesene Methode über des Feld
FOnBestimmteMessage
, das eine Methode darstellt ausgeführt, richtig?
Aber wann wird die Methode "MachWas" aufgerufen?
Übernimmt Delphi die Erkennung der Windows Message und die automatische Ausführung der Methode "MachWas"?
Wo wird Delphi das mitgeteilt?