关于动态控件的问题

benbenfei 2001-07-19 10:45:40
我动态创建了一个按钮数组,然后让这一组按钮都共用一个click事件,但是我希望不同的按钮按下得到不同的效果,这个事件怎么能够分辨出是哪一个按钮按下的呢?有没有方法可以得到控件数组的下标?谢谢指教!

例如让button[0]按下,窗口标题变为'0',
button[1]按下,窗口标题变为'1',
.............
...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbenfei 2001-07-20
  • 打赏
  • 举报
回复
怎么给分?
lwk_hlj 2001-07-20
  • 打赏
  • 举报
回复
coldljy说的对
coldljy 2001-07-19
  • 打赏
  • 举报
回复
这个问题不知回答过多少遍了,想不到还可以用这个赚点分。

呵呵
coldljy 2001-07-19
  • 打赏
  • 举报
回复
procedure TForm1.MyClick(Sender: TObject);
begin
if (Sender is Tbutton) then
Form1.Caption := IntToStr((Sender as TButton).Tag);
end;

procedure TForm1.testClick(Sender: TObject);
var
button1:array[1..9] of tButton;
i:integer;
begin
for i:=1 to 9 do
begin
button1[i]:= TButton.Create(self);
button1[i].top:=0+i*30;
button1[i].left:=0;
button1[i].Parent:=self;
button1[i].Caption := IntToStr(i);
button1[i].tag:=i;
button1[i].onclick:=MyClick;
end;
end;
powerlee 2001-07-19
  • 打赏
  • 举报
回复
可以先定义一个结构体
TNewButton = Record
btn:TBuuton;
Id:Integer;
Info:String;
...
end;

定义动态数组
btnArr : array of TNewButton;
当你动态建立Button的时候保存按钮相关信息
button := TButton.Create(Applicaiton);
button.OnClick := btnOnclick;
...
setlengh(btnArr,length(btnArr)+1);
with btnArr[Length(btnArr)-1) do begin
//用tag记录在数组中的编号
button.tag := length(btnArr) -1;
btn := Button ;

//加入代码记录关于此按钮的其他信息

end;
//在btnOnClick中
if sender is TButton then begin
//显示相关信息,当然也可以是做其他的操作
Form.Titile := btnArr[(Sender As TButton).tag].info;
。。。。
end;

5,388

社区成员

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

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