Einzelnen Beitrag anzeigen

FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#23

AW: Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?

  Alt 1. Dez 2010, 17:26
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?
Herzlichen Gruß
FriendOfDelphi

Geändert von FriendOfDelphi ( 2. Dez 2010 um 09:59 Uhr)
  Mit Zitat antworten Zitat