如何添加动态创建的Button的Onclick事件?(100分)

  • 主题发起人 主题发起人 图兰多
  • 开始时间 开始时间

图兰多

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的程序中,动态创建了一系列Button,要给它们添加一个类似的OnClick事件,
该如何办?
 
procedure TForm1.ButtonClick(Sender: TObject);
begin
...
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Button:=TButton.Create;
...
Button.OnClick:=ButtonClick
end;
 
来晚了,就差这一步了。
 
告诉你一个方便的方法:
先在form上加一个临时的button,双击后添加相关代码并保存,然后则删除from上的button
这时在代码中就只留下了按钮的事件代码和它的声明,以后在动态建立button后就可以将
名称赋给它的onclick
 
在创建OnClick事件时是要传递参数的,不然每个Button的Onclick不都一样了么?
 
OnClick的参数Sender就是指名到底是哪一个Button调用了ButtonClick事件。
比如
procedure TForm1.ButtonClick(Sender: TObject);
begin
TButton(Sender).Caption:='kkk'
end;
试一下,你点的Button的标题改变,而其他按钮则没变。
 
我调用动态创建的Button的OnClick事件不是对该Button进行操作,而是要在该Button的
下面创建一个Edit,让用户输入一个值,那怎么办?
 

procedure TForm1.ButtonClick(Sender: TObject);
begin
...
end;

中加入对Sender属性的识别
if TButton(Sender).Caption='aaa' Then
....

就可以了
 
这已经超出了你最初问的问题,但还是有办法解决的.
将每个Button的Tag赋不同的值,而将于Button关联的Edit的Tag值=Button的Tag值,
再这样编写程序:
procedure TForm1.ButtonClick(Sender: TObject);
var
i: Integer;
begin
for i:=0 to ComponentCount-1 do
if Components is TEdit then
if TEdit(Components).Tag=TButton(Sender).Tag then
begin
TEdit(Components).Text:='XXX';
...
end
end;
 
弄好了,谢谢各位,散分:)
 
后退
顶部