可以根据 Tag 区别呀,只需要一个onclick时间就可以区别了procedure FormCreate; var i : longint; begin...for i := 1 to BtnCount do begin mybtn[i].tag := i; mybtn[i].onclick := MyButtonClick; end; end;然后在 onclick 里面procedure MyButtonClick(sender:tobject); begin ... case (sender as TButton).Tag of 1 : Proc1; 2 : Proc2; ... n : ProcN end;...end;if
ButtonXX.onclick := MyProcedure
hehe,Wescom的为正解记住了: 事件就是方法的指针,可以将方法的地址赋值给事件。
我补充一点,MyProcedure必须在某个类中声明,并且要声明得和onClick一样
我的搞掂了。在程序中加了如下几句: 在FORM1的private中定义过程 procedure mybtnclick(Sender: TObject);然后是此过程的实现语句: procedure TForm1.mybtnclick(Sender:TObject); begin case (Sender as TButton).Tag of //要照169说的给每个动态生成控件的TAG赋值。 1:...... ... end; end; 还要记得在给每个动态生成控件的赋值时加上一句:mybtn[i].onclick:=mybtnclick; 现在就OK了
var i : longint;
begin...for i := 1 to BtnCount do
begin
mybtn[i].tag := i;
mybtn[i].onclick := MyButtonClick;
end;
end;然后在 onclick 里面procedure MyButtonClick(sender:tobject);
begin ... case (sender as TButton).Tag of
1 : Proc1;
2 : Proc2;
...
n : ProcN
end;...end;if
事件就是方法的指针,可以将方法的地址赋值给事件。
在FORM1的private中定义过程
procedure mybtnclick(Sender: TObject);然后是此过程的实现语句:
procedure TForm1.mybtnclick(Sender:TObject);
begin
case (Sender as TButton).Tag of //要照169说的给每个动态生成控件的TAG赋值。
1:......
...
end;
end;
还要记得在给每个动态生成控件的赋值时加上一句:mybtn[i].onclick:=mybtnclick;
现在就OK了