type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject) ; procedure LlamarPorNombre(Sender: TObject) ; 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.LlamarPorNombre(Sender: TObject) ; begin ShowMessage('Hola Delphi!') ; end; procedure TForm1.Button1Click(Sender: TObject) ; begin ExecMethod(Form1, 'LlamarPorNombre') ; end;
Fuente
Saludos.