delphi 循环动态释放控件

项目修改进行到最后时刻,卡在控件的动态释放上。真是无语,好在同事的帮助,搞定。

   //循环释放之前生成的标疑题卡

    for k := pnl1.Controlcount -1 downto 0 do
    begin
      if pos(‘by’, pnl1.Controls[k].Name) >0 then
      begin
        (pnl1.Controls[k] as TPanel).Visible :=False;
         pnl1.Controls[k].Free;
      end;
    end;

 

不能使用 for i:=0 to pnlTestNOPageBY.Controlcount

原因:当一个控件被释放之后,Controlcount 会重新统计 (Controlcount 是递减的)

当i 的值大于 Controlcount 后,就会造成数组越界的悲剧。

注意:delphi 控件有两种 Control 和Component

不同的控件需要使用不同的函数控制。

FindChildControl与FindComponent的区别见

http://blog.csdn.net/tht2009/article/details/6954880

delphi 循环动态释放控件

发表评论

邮箱地址不会被公开。 必填项已用*标注

滚动到顶部