type TForm1 = class(TForm)
Button1: TButton; procedure Button1Click(Sender: TObject); // Your routines (that you'll run by name) must be here procedure Hello_World(Sender: TObject); private
procedure ExecuteRoutine(Instance: TObject; Name: string); end;
var Form1: TForm1;
type TExecute = procedure of object;
procedure TForm1.ExecuteRoutine(Instance: TObject; Name: string); var Routine: TMethod;
Execute: TExecute; begin Routine.Data := Pointer(Instance); // Returns the address of a published method. Routine.Code := Instance.MethodAddress(Name); if Routine.Code = nil then Exit;
Execute := TExecute(Routine);
Execute; end;
procedure TForm1.Button1Click(Sender: TObject); begin ExecuteRoutine(Form1, 'Hello_World'); end;
procedure TForm1.Hello_World(Sender: TObject); begin ShowMessage('This is a test'); end;