关于动态创建Image的有关问题

关于动态创建Image的问题
我在panel上动态创建了数量未知的Image,根据后台采集的数据,使对应的Image背景显示不同的颜色,创建的时候没有问题,能正常显示,但是在程序运行一段时间之后,有些Image会不可见(实际上Image这个对象还留在内存中),如果电脑开了屏保,激活电脑后这种情况更加明显,不知道是什么原因导致的?
===============================================================
附上创建Image的代码:
  if TImage(FindComponent('EEI'+EquipName+'_'+Address))<>nil then
  TImage(FindComponent('EEI'+EquipName+'_'+Address)).Free;
  TImage.Create(self).Name:='EEI'+EquipName+'_'+Address;
  TImage(FindComponent('EEI'+EquipName+'_'+Address)).OnDblClick:=ImageDblClick;
  With TImage(FindComponent('EEI'+EquipName+'_'+Address)) do
  begin
  Hint:=EquipName+'('+Trim(DM.ADOQuery1.FieldByName('Mf05').AsString)+','+
  Trim(DM.ADOQuery1.FieldByName('Mf03').AsString)+',地址'+Address+')';
  ShowHint:=True;
  Canvas.Brush.Color:=clwhite;
  Top := iniFile.ReadInteger('DGI','EEI'+EquipName+'_'+Address+'.Top',0);
  Left := iniFile.ReadInteger('DGI','EEI'+EquipName+'_'+Address+'.Left',0);
  Height := iniFile.ReadInteger('DGI','EEI'+EquipName+'_'+Address+'.Height',20);
  Width := iniFile.ReadInteger('DGI','EEI'+EquipName+'_'+Address+'.Width',30);
  Canvas.Brush.Color:=Clgreen;
  rect:= Canvas.ClipRect;
  Canvas.FillRect(rect);
  Parent:=Panel3;
  Visible := true;
  end;

------解决方案--------------------
Image1.BringtoFont;

Image1.Invalidate;

试下
------解决方案--------------------
你这个代码是在创建的图片上画图,并不是图片啊!!!被其它窗口挡住后,当然就不见了,要重新画

在窗体的onPaint事件重新画吧,或者把这段码放在onPaint事件中

另外Image不用每次都判断和创建,在窗体打开时就创建就行了
------解决方案--------------------
用动态img 数组 维护
要设置 img Parent 为当前页的容器 或者 TTabSheet.