Ereignisse müssen gewöhnlich Methoden sein. Wenn du nichts gegen eine schmutzige Variante hast...
Delphi-Quellcode:
procedure Edit(Self: TObject; Sender: TObject); //Methoden haben den impliziten Parameter Self
begin
if TEdit(Sender).Color = clBlack then
begin
TEdit(Sender).Color:=clGreen;
end
else
begin
TEdit(Sender).Color:=clBlack;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var Event: TNotifyEvent; //Das ist der Type des Events (procedure(Sender: TObject) of object)
begin
TMethod(Event).Data:=nil; //Als Self wird nil übergeben, sonst eben was anderes eintraagen
TMethod(Event).Code:=@Edit;
Edit1.OnEnter:=Event;
Edit1.OnExit:=Event;
end;
Der Punkt ist, dass Methodenzeiger aus einem Zeiger auf Self und einem Zeiger auf den Code bestehen, daher ist die Zuweisung etwas komplizierter.