Hallo!
Folgende Situation:
Delphi-Quellcode:
unit A;
type
TPassiertWas =
procedure(Param1, Param2:
String);
TMyObject =
class(TObject);
private
FOnPassiertWas : TPassiertWas;
public
procedure TuWas;
property OnPassiertWas: TPassiertWas
read FOnPassiertWas
write FOnPassiertWas;
end;
...
procedure TMyObject.TuWas;
begin
...
if (Assigned(FOnPassiertWas)
then FOnPassiertWas('
eins', '
zwei');
end;
Delphi-Quellcode:
unit B;
uses
A;
type
TMyIrgenwas =
class(TObject);
private
FMyObj: TMyObject;
procedure Reagiere(Param1, Param2:
String);
public
constructor Create;
end;
...
constructor TMyIrgenwas.Create;
begin
FMyObj := TMyObject.Create;
FMyObj.OnPassiertWas := Reagiere;
// <-- Fehler: Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger'
end;
procedure TMyIrgendwas.Reagiere;
begin
MachWas();
end;
Was mache ich hier falsch? Warum kann ich dem Eventhandler OnPassiertWas nicht die Methode Reagiere zuweisen? Reagiere ist eine Methode einer klasse und keine reguläre Prozedur. Wo liegt also der Fehler?
Besten Dank
Ares