一个RTTI的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 meteores
  • 开始时间 开始时间
M

meteores

Unregistered / Unconfirmed
GUEST, unregistred user!
一个类的实例,仅知道其中有一个method 名称叫 'mymethod'
怎么样通过名称调用该方法
 
一个类的实例,仅知道其中有一个method 名称叫 'mymethod'
怎么样通过名称调用该方法
 
已有讨论:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1289838
以后提问前先搜索一下,节约自己时间 :)
 
随手些个例子:

TForm1 有个方法: FormMouseDown,使用 GetMethodProp 利用 rtti 调用之:

procedure TForm1.FormMouseDown(Sender: TObject
Button: TMouseButton;
Shift: TShiftState
X, Y: Integer);
begin
ShowMessage('asd');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
cMethod: TMethod;
begin
cMethod := GetMethodProp(Self, 'OnMouseDown');
TMouseEvent(cMethod)(Self, mbLeft, [], 0, 0);
end;
 
建议你看一下Delphi的RTTI机制文档(电子书)
http://program.tommsoft.com/
有下载。
 
后退
顶部