Delphi - como executar uma procedure pelo nome |
Top Previous Next |
|
unit Unit1;
interface
uses Forms, Classes, Controls, StdCtrls, Dialogs;
type TForm1 = class(TForm) Button1: TButton; procedure CallMeByName(Sender: TObject) ; procedure Button1Click(Sender: TObject); private procedure ExecMethod(OnObject: TObject; MethodName: string) ; end;
type TExec = procedure of object;
var Form1: TForm1;
implementation
{$R *.dfm}
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) ; begin ShowMessage('Hello Delphi!') ; end;
procedure TForm1.Button1Click(Sender: TObject); begin ExecMethod(Form1, 'CallMeByName') ; end;
end. |