首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-03-16 
动态生成按钮,不知道错在哪里报错:………………raisedexceptionclassEAccessViolationwithmessage………………百思不得

动态生成按钮,不知道错在哪里
报错:
………………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;

热点排行