有关动态生成控钮的问题:)

hi_long 2000-09-26 10:36:00
我做的程序要多态生成多个按钮(不定个数,而它们的onclick事件又不相同,
要用什么方法来定义事件??各高手一定要梆梆我,谢谢^_^
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hi_long 2000-09-29
  • 打赏
  • 举报
回复
多人的答案被接授。
单手拍掌 2000-09-26
  • 打赏
  • 举报
回复
ButtonXX.onclick := MyProcedure
169 2000-09-26
  • 打赏
  • 举报
回复
可以根据 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
iamfly2000 2000-09-26
  • 打赏
  • 举报
回复
生成不定个数的按钮可以用动态数组,如:
mybtn:array of TButton;
至于它们的ONCLICK事件吗!我也正在找答案,谁知道的麻烦也告诉我一声!谢了:)
iamfly2000 2000-09-26
  • 打赏
  • 举报
回复
我的搞掂了。在程序中加了如下几句:
在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了




梁苏彬 2000-09-26
  • 打赏
  • 举报
回复
我补充一点,MyProcedure必须在某个类中声明,并且要声明得和onClick一样
KCOM 2000-09-26
  • 打赏
  • 举报
回复
hehe,Wescom的为正解

记住了:
事件就是方法的指针,可以将方法的地址赋值给事件。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧