with panel2 do
  begin
  for i:=0 to ControlCount - 1 do
  begin
    if controls[i] is tcheckbox then
    begin
      tcheckbox(controls[i]).Free;
    end;
  end;
  end;
释放在panel2上动态创建的checkbox的时候出现list index out of bound(367)这个提示  不知道怎么解决
一开始的几个释放是可以的  因为checkbox比较多  有几百个   所以不知道具体释放到哪一个的时候出问题了  高手帮忙看下什么问题

解决方案 »

  1.   

    主要是想释放panel上的checkbox   不知是否还有别的好办法可以一下清空   方便再创建   如果有的话  哪位提示一下呢
      

  2.   

    猜想:checkbox使用Free后,controls的编号应该会相应的发生变化,因为free后,控件的总个数其实已经发生变化了; 
      

  3.   

    有一定的道理,使用while循环
    while(true) do begin
      preCount := ControlCount;
      for k := 0 to ControlCount - 1 do begin
        // 释放
      end;
      if preCount <> ControlCount then Break;
    end;
      

  4.   

    if preCount = ControlCount then break;  // 呵呵,低级错误
      

  5.   

    for i:=ControlCount-1 downto 0 do 看下 
      

  6.   

    var n:=ControlCount-1...
    begin
    ...
    for i:=n downto 0 do
    ...
      

  7.   

    with panel2 do 
      begin
      n:= ControlCount - 1
      for i:=n downto 0 do 
      begin 
        if controls[i] is tcheckbox then 
        begin 
          tcheckbox(controls[i]).Free; 
        end; 
      end; 
      end; 
      

  8.   

    FREE掉以后会自动前移。
    应该是for i:=CotrolCount-1 downto 0 do
      

  9.   

    用TStrings把需要Free的控件name记录下来,先别释放控件;
    遍历TStrings释放控件;