动态生成控件,很急啊!大家救命!

bengan 2003-08-19 04:31:53
请先看下面两段代码:
1
var
checkbox:TcheckBox;
begin
CheckBox:=TcheckBox.create(self);
CheckBox.parent:=form1;
CheckBox.left:=100;
CheckBox.top:=checkBox.top-10;
end;
该代码运行可以生成一个checkbox;

2
i:integer;
checkbox: array of TcheckBox;
begin
for i:=0 to 10 do
CheckBox[i]:=TcheckBox.create(self);
CheckBox[i].parent:=form1;
CheckBox[i].left:=100;
CheckBox[i].Top:=300;
CheckBox[i].top:=checkBox[i].top-10;
end;
该底码运行出错“Access Violation at address 0044DC22 in module 'project.exe' write of address 00000003”

请问我可以定义array of TcheckBox吗?
...全文
44 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
OO_is_just_P 2003-08-20
  • 打赏
  • 举报
回复
OK
97866 2003-08-19
  • 打赏
  • 举报
回复
setlength(checkbox,11);
动态数组使用前要分配内存。
或:checkbox: array[0..10] of TcheckBox;
szcoder 2003-08-19
  • 打赏
  • 举报
回复
动态数组需要SetLength
加上:
SetLength(checkbox,11);
  • 打赏
  • 举报
回复
var
i:integer;
checkbox: array of TcheckBox;
begin
setlength(checkbox,11);///add it will be OK
for i:=0 to 10 do
begin
CheckBox[i]:=TcheckBox.create(self);
CheckBox[i].parent:=form1;
CheckBox[i].left:=100;
CheckBox[i].Top:=300;
CheckBox[i].top:=checkBox[i].top-10;
end;
end;

5,379

社区成员

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

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