Código
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, JvExButtons, JvButtons, DB, DBClient,
wwclient, JvDataSource, Grids, DBGrids, JvgDBGrid, JvExControls,
JvXPCore, JvXPButtons;
type
TForm1 = class(TForm)
Button1: TJvHTButton;
procedure Button1Click(Sender: TObject);
procedure CallMeByName(Sender: TObject);
private
procedure ExecMethod(OnObject: TObject; MethodName: string);
public
{ Public declarations }
end;
var
Form1: TForm1;
type
TExec = procedure of object;
implementation
uses
unit2;
{$R *.dfm}
{................................................................ ExecMethod }
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;
IF not Assigned(Routine.Code) then
Exit;
Exec:= TExec(Routine);
Exec;
end;
{.............................................................. CallMeByName }
procedure TForm1.CallMeByName(Sender: TObject);
begin
ShowMessage('Hello Delphi!');
end;
{.............................................................. Button1Click }
procedure TForm1.Button1Click(Sender: TObject);
begin
ExecMethod(Form1, 'CallMeByName');
end;
end.
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009