我定义了一个数组
  private
     Info:array [0..27,0..17] of TQRLabel;
然后在formcreat中创建     
     info[i,j]:=TQRLabel.Create(self);  
但我第二次调用时,它还保留的上次的信息(窗体关闭时没有释放)
请问要怎样释放阿?

解决方案 »

  1.   


    try
      for i:=0 to 数组的最大个数 do
        begin
          
          if self.Components[i] is TQRLabel then
            TQRLabel(self.Components[i]).Free;
        end;
    Except
       exit;
    end;或者 
            for I := 1 to 27 do
               begin
                for j:=0 to 17 do
                info[i,j].Parent:=nil;
                info[i,j].Free;
                end;前面一个不知道行不行,但后面一个可以的,亲测过的。
      

  2.   

    info[i,j].Parent:=nil;
    ========================
    这句静态的数组可以这样写吗?动态对那样写吧
      

  3.   

    创建时加了self,窗体会自己管理释放工作的
      

  4.   

    对,父类销毁时  会先销毁子类楼主的问题说的不是太明白  
    你是在formcreat中创建   那再一次运行时   又重新创建了才对  怎么会保留上次的记录呢
    或者你用的是非模态窗体  关闭只是隐藏起来  而不是销毁  下次打开的时候并没有重新创建  所以保留了上次的记录
      

  5.   


    for i:= Low(Info) to High(Info) do
      if (Info[i] <> nil) then TQRLabel(Info[i]).Free;
      

  6.   

    然后在formcreat中创建      
         info[i,j]:=TQRLabel.Create(self);   
    改到FormShow里面
    info[i,j]:=TQRLabel.Create(self);   
    在FormClose中加下
         for I := 1 to 27 do
          for j:=0 to 17 do
             info[i,j].Free;
      

  7.   

    我想楼主说的窗体关闭不是真的关闭 真是隐藏起来了
    所以在窗体没有Destroy,是不会释放的
    你可以在需要显示前分配内存,把前一次释放掉
      

  8.   

    也可以不释放,直接改它的Caption值和位置就可以了