delphi动态创建edit的问题.求大神帮助

procedureTForm1.Button1Click(Sender:TObject);vari,m,n,p:integer;beginm:=20;n:=strtoin... procedure TForm1.Button1Click(Sender: TObject);
var
i,m,n,p:integer;
begin
m:=20;
n:=strtoint(e1.Text);
setlength(editm,n);
for i:=0 to n-1 do
begin
editm[i]:=tedit.Create(self);
editm[i].Parent:=panel1;
editm[i].Width:=120;
editm[i].Height:=20;
editm[i].Left:=0;
editm[i].Top:=0+m;
editm[i].Name:= 'edit'+inttostr(i);
editm[i].Text:= 'edit'+inttostr(i);
editm[i].Visible:=true;
m:=m+20;
end;
end;

看看我这个问题:我按一下button键后,动态创建一组edit,但是我按第二次时就出错。怎么改???
我知道用editm[i].free;
但是,怎么把这句加上?
展开
 我来答
memkey
2013-11-02
知道答主
回答量:13
采纳率:0%
帮助的人:11.2万
展开全部
procedure TForm2.Button1Click(Sender: TObject);
var
  i,m,n,p:integer;
  editm: array of TEdit;
begin
  m:=20;
  n:=strtoint(e1.Text);
  setlength(editm,n);
  //清除掉之前添加的edit
  for i:=Panel1.ControlCount-1 downto 0  do
    Panel1.Controls[i].Free;

  for i:=0 to n-1 do
  begin
    editm[i]:=tedit.Create(self);
    editm[i].Parent:=panel1;
    editm[i].Width:=120;
    editm[i].Height:=20;
    editm[i].Left:=0;
    editm[i].Top:=0+m;

    editm[i].Name:= 'edit'+ inttostr(i);
    editm[i].Text:= 'edit'+inttostr(i);
    editm[i].Visible:=true;
    m:=m+20;
  end;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
台浦泽4r
2013-11-02 · TA获得超过937个赞
知道小有建树答主
回答量:1249
采纳率:62%
帮助的人:635万
展开全部
加个循环,然后写上editm[i].free;就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jonahkingkkkk
2013-11-02 · TA获得超过466个赞
知道小有建树答主
回答量:190
采纳率:50%
帮助的人:158万
展开全部
在你的for语句前面加一段。

for i := 0 to Panel1.ControlCount-1 do
begin
if Assigned(editm[i]) then
begin
FreeAndNil(editm[i]);
end;
end;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式