« Windows 7のバージョン情報を調べた | メイン | propertyを使うにはobjectクラスを継承した新スタイルクラス(new-style class)でなければならない »

Delphiのメソッドをメソッド名から実行する方法

Delphiのメソッドをメソッド名から実行する方法。

元ネタは「Execute a Delphi Method (Procedure/Function) by Name」より。
ヘルプの「TObject::MethodAddress」にも同じことが書かれていました。

次のような関数を用意します。

procedure ExecMethod(OnObject: TObject; MethodName: string);
type
  TExec = procedure of object;
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;

あとはこの関数を使って、目的のメソッドを実行します。

# Form1.Button1Clickを実行する
ExecMethod(Form1, 'Button1Click');

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/964

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2009年05月10日 12:15に投稿されたエントリーのページです。

ひとつ前の投稿は「Windows 7のバージョン情報を調べた」です。

次の投稿は「propertyを使うにはobjectクラスを継承した新スタイルクラス(new-style class)でなければならない」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35