读书人

动态生成按钮不知道错在哪里,该如何

发布时间: 2012-03-16 16:34:56 作者: rapoo

动态生成按钮,不知道错在哪里
报错:
………………raised exception class EAccessViolation with message………………
百思不得其解。
如果在CreateBtn的Begin下面,第一句写ShowMessage(IntToStr(i));的话,运行时往往到最后一个按钮时报上面的错误,而不是一开始就报错。如果不加ShowMessagep这句,是一开始就报错,运行不了。

procedure TFormStuMain.Button1Click(Sender: TObject);
begin
CreateBtn;
end;

procedure TFormStuMain.CreateBtn;
var
varBtn:array of TButton;
btnNum:Integer;
i:Integer;
begin
btnNum:=StrToInt(FormStuMain.Edit1.Text)-1;
SetLength(varBtn,btnNum);
for i:=0 to btnNum do
begin
varBtn[i]:=TButton.Create(varBtn[i]);
varBtn[i].Parent:=FormStuMain.Panel1;
varBtn[i].Caption:= '按钮 '+IntToStr(i);
varBtn[i].Left:=75*i;
end;
end;

[解决办法]
btnNum:=StrToInt(FormStuMain.Edit1.Text);
SetLength(varBtn,btnNum);
for i:=0 to btnNum-1 do
begin
varBtn[i]:=TButton.Create(nil);
varBtn[i].Parent:=FormStuMain.Panel1;
varBtn[i].Caption:= '按钮 '+IntToStr(i);
varBtn[i].Left:=75*i;
end;

读书人网 >.NET

热点推荐