菜鸟问题,控件数组

aqjy 2003-10-17 09:10:32
建立了一个控件数组(一组TButton),在事件中,如何知道是哪个下标触发的事件?
注:我是这样定义事件的:viewbutton[i].OnClick :=ViewbuttonClick;
...全文
35 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
aqjy 2003-10-17
  • 打赏
  • 举报
回复
谢谢dulei115()
dulei115 2003-10-17
  • 打赏
  • 举报
回复
新建一个Project,把上面的代码Copy一下,在属性框中将Form1的OnCreate事件设为FormCreate(下拉选择),就可以看到效果,具体怎样实现楼主自己去看!
dulei115 2003-10-17
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure MyClick(Sender:TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
a:array[1..100] of tbutton;

implementation

{$R *.dfm}

procedure TForm1.MyClick(Sender: TObject);
var
i:integer;
nam:string;
begin
i:=strtoint(Trim(Copy(TButton(Sender).Name,7,3)));
TButton(Sender).Visible:=not TButton(Sender).Visible;
i:=i+1;
nam:='button'+inttostr(i);
if i<=100 then
TButton(FindComponent(nam)).Visible:=not TButton(FindComponent(nam)).Visible
end;

procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
for i:=1 to 100do
begin
a[i]:=tbutton.Create(self);
with a[i] do
begin
Top:=(i-1) div 20*20;
Left:=(i-1) mod 20*20;
Height:=20;
Width:=20;
Name:='button'+inttostr(i);
Caption:='';
Parent:=Form1;
OnClick:=MyClick;
end;
end;
end;

end.
aqjy 2003-10-17
  • 打赏
  • 举报
回复
?我的问题是在事件中,如何得到i(参数中只有一个Sender),不是显示一下i。
wzds2000 2003-10-17
  • 打赏
  • 举报
回复
ShowMessage(IntToStr(i));

5,379

社区成员

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

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