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