Ich würde bei "procedure of Object", also intern Datentyp
TMethod, bleiben.
Diese Art von Events sind deutlich schneller und schlanker als das neue "reference to procedure" (auch bekannt als Closures).
Closures wurden IHMO nie als Ersatz für Events entwickelt.
Ausserdem können mit Closures unerwarte Dinge passieren, weil der Compiler die lokalen Variablen zum Zeitpunkt der Erzeugung des Closure "reinwurstelt".
Beispiel:
Delphi-Quellcode:
procedure TMyClass.DoStuff;
var
j: integer;
ShowCounter: TProc; // Method without parameter.
begin
ShowCounter :=
procedure
begin
// j is known here because it is wrapped in a closure
// and made available to us!
writeln(IntToStr(j));
end;
for j := 1 to 10 do
ShowCounter;
end;