各位高手:我的程序为什么出错,关于将过程赋值给某个动作(50分)

  • 主题发起人 主题发起人 hxliu
  • 开始时间 开始时间
H

hxliu

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
procedure rproc(sender:tobject);
{ Public declarations }
end;
var
Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.BitBtn2Click(Sender: TObject);
var m:tmethod;
begin
m.Code:=@rproc; <---出错语句,为什么不行
m.data:=bitbtn1;
bitbtn1.OnClick:=tnotifyevent(m);
end;

procedure TForm1.rproc(sender: tobject);
begin
showmessage('this is a test');
end;
end.
//另外:如果我的过程名是一个字符型变量,程序又该怎么写。
 
为什么不直接 bitbtn1.OnClick := rproc呢?
 
rproc本来就是一个方法(对象的成员过程),又何需用TMethod?
象上楼一样写就行了.
 
谢谢两位的意见!

这只是一个用来调试程序的简单实例,请帮我检查为什么出错。
我的过程名其实是一个字符型变量。
 
m 的变量申明应为一个过程变量才对,如:rproc(sender:tobject);
 
在form中添加一个方法,形式和 Onclick相同:
procedure TForm1.MyMethod(Sender: TObject);
begin
............
end;

然后:
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
bitbtn1.OnClick:=MyMethod;
end;
 
后退
顶部