如题

解决方案 »

  1.   

    有很多啊 我用free  只能隐藏最近创建的一个
      

  2.   

    for i:=1 to n do
    begin 
    edit:=tedit.create(self);
           edit.Width:=40;
           edit.parent:=form1;
    end;
      

  3.   

    晕,你这样创建的EDIT有什么用,而且你这样创建叫WINDOWS如何找句柄,不报错就不错了
      

  4.   

    如果是很多的话,最好用数组来创建与释放
    参考:
    先声明一个Edit数组,可以是静态的也可以是动态的比如 AEdit: array of TEdit;
    //创建
        Count := 10;
        SetLength(AEdit,Count+1);
        for i:=1 to Count do
        begin
          EditName := 'Edit' + IntToStr(i);
          AEdit[i] := TEdit.Create(Self);
          AEdit[i].Parent := Self;
          if i = 1 then
          begin
            AEdit[i].Top := Top;
          end
          else if i > 1 then
          begin
            AEdit[i].Top := Top + 10;
          end;
          AEdit[i].Left := 405;
           AEdit[i].Width := 100;
          AEdit[i].Height := 14;
          AEdit[i].AutoSize := False;
          AEdit[i].Name := EditName;
          AEdit[i].OnKeyDown := EditKeyDown;
    //释放
        for i:=1 to Count do
        begin
          EditName := 'Edit' + IntToStr(i);
          if assigned(TEdit(FindComponent(EditName)) then
          begin
            (FindComponent(EditName) as TEdit).Free;
            (FindComponent(EditName) as TEdit) := nil;
          end;
        end;
        AEdit := nil;
    ----------------
          
      

  5.   

    你事先给控件命名
    for i:=1 to n do
    begin 
    edit:=tedit.create(self);
           edit.Width:=40;
           edit.parent:=form1;
           edit.name:=xxxxx;
    end;需要释放时
    for i:=0 to frmMain.ComponentCount-1 do
      begin
        if (frmMain.Components[i] is Tedit)  then
         if  (frmMain.Components[i] as Tedit).name=xxxxxx then
           
             frmMain.Components[i].free;end;