首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

用了动态控件,程序封闭时报错

2012-12-28 
用了动态控件,程序关闭时报错1. 程序运行期间动态创建了一些checkbox控件,窗体关闭时没有进行释放(认为窗

用了动态控件,程序关闭时报错
1. 程序运行期间动态创建了一些checkbox控件,窗体关闭时没有进行释放(认为窗体关闭时会释放上面的控件)
   关闭这个子窗体的时候程序不会报错,但关闭程序的主窗体时则报错“Access Violation at address FFF40000”

2. 若在子窗体关闭时进行释放,代码如下,则关闭程序主窗体的错误代码就变成了“Access Violation at address 00574C32”
procedure TFRHWIPTrend.FormClose(Sender: TObject; var Action: TCloseAction);
var i:integer;
cbox:TCheckbox;
begin
 
  for i:=panel6.ComponentCount-1 downto 0  do
    begin
        //panel6.components[i].Free;
        if (panel6.components[i] is TCheckbox) then
        begin
            cbox:= TCheckbox(panel6.components[i]);
            FreeAndNil(cbox);
        end;
    end;

请高手指点该怎么解决这种问题啊?

我另外的一个子窗体也有动态控件,但那个就不报错,唉!
[解决办法]
在FormClose函数结束的end上下断,看是先跳出错误还是先跑到断点位置,然后就可以分析是多重释放导致的还是其他原因.如果跑到断点位置没出错,那就是其他问题
[解决办法]
创建的时候用create(self);或者create(application);
让它随窗体关闭或者程序退出时自动释放

不过,你确定这错误是控件引起的吗(怀疑是其它原因)
[解决办法]
动态创建的控件一般也不用手动去释放啊,估计你程序哪里还存在问题
[解决办法]
数组释放了吗?
[解决办法]
sgList.Cells[j,0]是什么?
取单元格?
什么控件的单元格?
如果是Excel工作表的话那个0会导致报错!

热点排行