我在FORM上放一个ScrollBox,在上面动态生成控件,再生成子控件(如Panel上有Edit)
怎样把上面的控件Free呢?
  for i:=0 to ScrollBox2.ControlCount-1 do
    begin
    ScrollBox2.Controls[i].Destroy;(此处ScrollBox2.Controls[i]上还有控件怎么Free呢?)
    ScrollBox2.Controls[i].Free;
    end;
  ScrollBox2.Update;

解决方案 »

  1.   

    owne的作用就是把它上面的东西给free掉,对吗?
      

  2.   

    动态生成的时候指定子控件的Owner属性为你当前释放的控件就可以了!
      

  3.   

    在scorllbox中放一个panelX。然后begin//动态创建控件
      YourContral:=TYonrContal.Creat(PanelX);
      YourContral.paren:=PanelX;
    End;begin//删除控件
      PanelX.free;//只须这样就可以将所有控件删除
    end;delphi中有个约定,当一个对象free时,所有owne属性为这个对象的对象都会自动free。
      

  4.   

    是这样的  假设你在ScrollBox上直接创建的一级子控件为Control_
    A[i],然后你还要在Control[i]_A上面创建新的二级控件Control[i]_B........
    Control_A[i]:=TControl_A.Create(ScrollBox);
    Control_A[i].Parent:=ScrollBoxControl_B[i]:=TControl_B.Create(Control_A[i]);
    Control_B[i].Parent:=Control_A[i];释放的时候可以用你原来的
    for i:=ScrollBox2.ControlCount-1  downto  0 do //一般都要这样循环
        begin
        FreeAndNil(ScrollBox2.Controls[i]);
        end;
      

  5.   

    先检查ScrollBox2.Controls[i]里的子控件的Edit1.Parent=Panel1就
    Free Edit1
    给你个有语法问题的答案.for i=0 to form1.compoments.count-1 do
    begin
    if form1.compomtnt[i].parent=panel1
    edit1.free;
    end;再Free Panel1
      

  6.   

    都不行呀,都报错.
    owner属性是个Read-Only属性.
      

  7.   

    delphi_xizhousheng(西周生)的方法应该可行啊!我以前就是这么做的,如果你有很多层框架的话可以做个第归函数去释放你动态生成的控件!