Deine "Irgendwaspassiert" ist, wie dein Delphi-Compiler schon meckert, eine reguläre Prozedur, die du keinem Ereignis als Behandlungsroutine zuweisen kannst.
Die "Irgendwaspassiert" muss ein "Methodenzeiger" sein. Kurz gesagt heisst das, dass er eine Methode einer Klasse sein muss, was bei dir aber nicht gegeben ist.
Delphi-Quellcode:
type
TIrgendwaspassiert = procedure (Sender: TObject; Param1: String; Param2: String) of object;
TIrgendeineKlasse = class (...)
private
FIrgendwaspassiert: TIrgendwaspassiert;
public
procedure MacheIrgendwas;
published
property OnIrgendwaspassiert: TIrgendwaspassiert read FIrgendwaspassiert write FIrgendwaspassiert;
end;
TForm1 = class (TForm)
private
FIrgendeineKlasse: TIrgendeineKlasse;
procedure MyIrgendwaspassiert (Sender: TObject; Param1: String; Param2: String);
public
...
end;
implementation
procedure TIrgendeineKlasse.MacheIrgendwas;
begin
MacheVieleSachen;
if Assigned (FIrgendwaspassiert) then
FIrgendwaspassiert (Self, DeinParam1, DeinParam2);
MacheAndereSachen;
end;
// ****
procedure TForm1.Create (Sender: TObject);
begin
FIrgendwaspassiert := TIrgendwaspassiert.Create;
FIrgendwaspassiert.OnIrgendwaspassiert := MyIrgendwaspassiert;
end;
procedure TForm1.Button1Click (Sender: TObject);
begin
FIrgendwaspassiert.MacheIrgendwas;
end;
procedure TForm1.Destroy;
begin
FreeAndNil (FIrgendwaspassiert);
inherited;
end;
end.
Das sollte klappen.