如何动态添加控件中的事件?(100分)

  • 主题发起人 主题发起人 交通灯
  • 开始时间 开始时间

交通灯

Unregistered / Unconfirmed
GUEST, unregistred user!
我动态添加一个按钮,
var
Form1: TForm1;
procedure MyOnClick(Sender: TObject); 在此声明
implementation

{$R *.dfm}


procedure TForm1.Button2Click(Sender: TObject);
var
MyBu : TBUTTON;
begin
MyBu:=TBUTTON.Create(Form1);
MyBu.Parent:=Form1;
MyBu.Left:=10;
MyBu.Top:=10;
MyBu.OnClick:=MyOnClick(sender:TObject); 编译时这句出错!
MyBu.Show;
end;
procedure MyOnClick(Sender: TObject);
begin
form1.close;
end;
出错信息:')'expected but ':' found
请问怎样才能 动态添加控件中的事件?
 
MyBu.OnClick:=MyOnClick;
就可以了。注意申明过程时参数必需正确。
 
MyBu.OnClick:=MyOnClick;
如果这样,
编译时这句出错:Incompatible types: 'method pointer and regular procedure'
程序如下
var
Form1: TForm1;
procedure MyOnClick;
implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
var
MyBu : TBUTTON;
begin
MyBu:=TBUTTON.Create(Form1);
MyBu.Parent:=Form1;
MyBu.Left:=10;
MyBu.Top:=10;
MyBu.OnClick:=MyOnClick;
MyBu.Show;
end;

procedure MyOnClick;
begin
form1.close;
end;

end.
 
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure MyOnClick(Sender: TObject);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
MyBu : TBUTTON;
begin
MyBu:=TBUTTON.Create(Form1);
MyBu.Parent:=Form1;
MyBu.Left:=10;
MyBu.Top:=10;
MyBu.OnClick:=MyOnClick;
MyBu.Show;
end;

procedure TForm1.MyOnClick(Sender: TObject);
begin
close;
end;
 
多人接受答案了。
 
后退
顶部