Ver Mensaje Individual
  #1  
Antiguo 26-04-2007
Avatar de makina
makina makina is offline
Miembro
 
Registrado: oct 2005
Ubicación: Mexico DF.
Posts: 27
Reputación: 0
makina Va por buen camino
Ejecutar procedimientos por su nombre y con parametros

Hola a todos!!

Tengo un problema y espero me puedan ayudar.

Necesito poder ejecutar un metodo(procedimiento/funcion) por su nombre, y ademas pasarle valores, ya he buscado en el foro y me encontre con la solucion que propone Neftalí con el uso de RTTI, sin embargo ademas de poder llamar al procedimiento necesito pasarle parametros, algo asi:

Código Delphi [-]
type
   TForm1 = class(TForm)
     Button1: TButton;
     procedure Button1Click(Sender: TObject) ;
     procedure CallMeByName(Sender: TObject;Valor1:string) ;
   private
     procedure ExecMethod(OnObject: TObject; MethodName: string) ;
   end;
 
var
   Form1: TForm1;
 
type
   TExec = procedure of object;
 
procedure TForm1.ExecMethod(OnObject: TObject; MethodName: string) ;
var
   Routine: TMethod;
   Exec: TExec;
begin
   Routine.Data := Pointer(OnObject) ;
   Routine.Code := OnObject.MethodAddress(MethodName) ;
   if NOT Assigned(Routine.Code) then Exit;
   Exec := TExec(Routine) ;
   Exec;
end;
 
procedure TForm1.CallMeByName(Sender: TObject;Valor1:String) ;
begin
   ShowMessage(Valor1) ;
end;
 
procedure TForm1.Button1Click(Sender: TObject) ;
begin
   ExecMethod(Form1, 'CallMeByName', valor1) ;
end;






es decir que en el momento en que ejecute el metodo ExecMethod con el parametro 'CallMeByName' tambien pueda pasarle el parametro valor1.

Espero haber sido claro, y les agradesco su ayuda

------------------------------------------------
makina:

Saludos desde México

Última edición por roman fecha: 26-04-2007 a las 08:24:23. Razón: Corregir etiqueta [delphi]
Responder Con Cita