Lo más aproximado que veo que puedes hacer es algo como ésto:
Código Delphi
[-]
var
Routine : TMethod;
p1:Pointer;
Str:String;
begin
Routine.Data := Pointer(Edit1);
Routine.Code := Self.MethodAddress('MyExit');
if (Routine.Code <> nil) then begin
p1 := @Edit1.OnExit;
if (p1 = Routine.Code) then begin
MessageDlg('Edit tiene asignado el MyExit', mtInformation, [mbOK], 0);
end
else begin
MessageDlg('Edit no tiene asignado el MyExit', mtInformation, [mbOK], 0);
end;
end
else begin
MessageDlg('No encuentra el procedimiento MyExit', mtError, [mbOK], 0);
end;
Lo que puedes hacer es comprobar si es un método determinado. Es decir primero programas tu método en el form (como published) y luego puedes comprobar si está apuntando a ese. En todo caso puedes saber a qué método apunta si es que está definido como published en el form, utilizando:
MethodName
Algo así:
Código Delphi
[-]
Str := Self.MethodName(@Edit1.OnExit);
Pero sólo te devolverá el nombre si está apuntando a un método definido como published en el form (ya que se hace vía RTTI). En ese caso sí obtendrás el nombre.
La clase está definida de ésta forma:
Código Delphi
[-]
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Edit1Enter(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
public
published
procedure MyExit(Sender: TObject);
end;