Ver Mensaje Individual
  #2  
Antiguo 21-06-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.436
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Lo más aproximado que veo que puedes hacer es algo como ésto:

Código Delphi [-]
 var
   Routine   : TMethod;
   p1:Pointer;
   Str:String;
 begin
   // Acceso a la rutina
   Routine.Data := Pointer(Edit1);
   // Devuelve la dirección de un método published
   Routine.Code := Self.MethodAddress('MyExit');
   // a encontrado el código de la rutina...
   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
     { Private declarations }
   public
   published
     { Public declarations }
     procedure MyExit(Sender: TObject);
   end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita