在请教一个动态创建Timage组件的问题(100分)

  • 主题发起人 主题发起人 cqzx
  • 开始时间 开始时间
C

cqzx

Unregistered / Unconfirmed
GUEST, unregistred user!
请教:为什么动态创建的Timage组件,装载位图;在使用完毕后释放组件,可是释放后,窗体中的图片没有消失,这是什么原因引起的呢,应该怎样解决。很急,谢谢!
 
再线等待......
可以加分!
 
你是怎么释放的呢???
 
释放后没刷新显示吧
 
没问题,已经测试过,看例子

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Image1:= TImage.Create(Self);
Image1.Parent:=Self;
Image1.Width:=300;
Image1.Height:=300;
Image1.Stretch:=true;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile('C:/KingPlayerL.bmp');
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Image1.Free;
end;
 
var
image:Timage;
....
创建部分:
image:=Timage.create(self);
image.parent:=self;
...
image.picture.loadfromfile('c:/a.bmp');

.....
释放部分:
image:=nil;
image.free;
这种释放后,窗体中的图片还是存在,我不知道问题出在那儿了,请指点,谢谢!
 
不要image:=nil;
 
要不改为 Image1.Picture:=nil;
 
可是我开始没有加image:=nil这一句,是因为我发现释放后,其对象好像没有被释放掉,所以我才加了这一句。结果还是没有实现。刚才有朋友说到没有刷新,应该怎样来刷新呢。
我还是说说我的用处吧,是这样的:我之所以相采用动态创建timage组件,主要是因为我的程序中监控了多个点,那么在一幅地图中,用户可以根据实际需要,添加一个监控点,那么,我需要,记录下这个点在地图中的位置,同时要为其分配以个timage对象,当这个点的数据正常或是告警时,需要及时进行指示。同样,用户如果需要删除已经添加的某一个点时,在数据库中删除该点的坐标信息,同时释放该点对应的Timage对象。
就是这样的目的。现在就是释放的时候,出现我所说的情况,试了好多遍了,还是老样子。
 
image.free;
image:=nil;

顺序不对!
 
有这样一个现象,因为采用的方式时,当窗体创建的时候,动态装载所有监控站点在地图中的所有信息。删除的时候,第一次删除某一站点后,图片消失了,在删除下一个站点和其他站点的时候,图片就不能删掉了。这个现象也出现了好几次了,不知道是不是动态数组部分引起的问题。
 
to lzhuan:
您的方法我也试过,还是不行。感觉也有些奇怪了。我不知道是不是动态数组所引起的。
 
找到问题了,就是动态数组部分引起的,因为每添加一个或者删除一个后,需要在此装载一次信息,就是这个地方引起的错误。
谢谢大家,不胜感激!
 
image.free;
image:=nil;
调个个怎么样???
 
多人接受答案了。
 
后退
顶部