彻底删除并释放一个按钮是不是这样呢?procedure TfrmTask.btn1Click(Sender: TObject);
begin
  btnBiaoji.Destroy;
  btnBiaoji.Free;
end;我要删除的是一个动态生成的TPanel: todaytasks: array[0..100] of TPanel;
这些TPanel动态生成到一个TScrollBox上,生成的数目每次十不定的,假如这次我生成了10个todaytasks(todaytasks[0]...todaytasks[9])那如果我要删除todaytasks[2]之后的所有todaytasks,怎么操作呢?在我点击一个按钮的时候触发.
多谢大侠指点.

解决方案 »

  1.   

    procedure TfrmTask.btn1Click(Sender: TObject);
    begin
      //btnBiaoji.Destroy; 不需要
      btnBiaoji.Free;
    end;
    for i:=3 to ScrollBox.ControlCount-1 do
      ScrollBox.Controls[i].Free;一般情况下。
    ScrollBox中加入TControl的顺序是不变的.
      

  2.   


    用这个才能真确实现效果,不过还是非常感谢!
      for i:=0 to SBoxToday.ControlCount-1 do
        SBoxToday.Controls[0].Free;
      

  3.   

    楼主既然是动态生成控件并存储对象于此动态数组中,
      todaytasks: array[0..100] of TPanel;
    那么在内存中就有对象的数据了,没有必要从界面上去重新获取对象数据,也就是没有必要使用ScrollBox对象的Control属性了。
    可以直接释放指定对象:  for TemI := 3 to 100 do
      begin
        if Assigned(todaytasks[TemI]) then
        begin
          FreeAndNil(todaytasks[TemI]);
        end;
      end;
      

  4.   

    一般不去调用Destroy方法,用Free