一个OnClick事件中,动态显示一个Image:
Image1 := TImage.Create(Form1);
Image1.Picture.LoadFromFile('D:\test\1.bmp');
Image1.Parent := Form1.Panel1;
Image1.Left := 0;
Image1.Show;
当第二次再触发这个OnClick事件后,又显示一个Image:
Image1 := TImage.Create(Form1);
Image1.Picture.LoadFromFile('D:\test\2.bmp');
Image1.Parent := Form1.Panel1;
Image1.Left := 100;
Image1.Show;请问,在OnClick事件结束后,Panel1上显示的图片存放在什么地方,为什么显示了第二个图片后,第一个还在?还有就是如何清除这些图片?
很急,谢谢。

解决方案 »

  1.   

    你的Image1是个什么范围的变量?
    不太明白你说的情况,利用Panel1重绘一次也许就可以。
      

  2.   

    If Image1 <> nil then Image1.free;
    Image1 := TImage.Create(Form1);
    Image1.Picture.LoadFromFile('D:\test\2.bmp');
    Image1.Parent := Form1.Panel1;
    Image1.Left := 100;
    Image1.Show;
      

  3.   

    如果不行,就试试Panel1.Repaint;
      

  4.   

    原来Image1是一个全局变量,改成局部变量也不行.
    Repaint仍然会绘制出图片.如果Image1是全局变量,添上If Image1 <> nil then Image1.free;结果是显示第二个图片时,第一个就没有了,但我想要的结果是这些图片都在,而在我需要reset的时候(比如点击reset按钮),才将这些图片free掉.如何进行?
      

  5.   

    通过OnClick事件,Panel1上出现了四个图片,在点击reset时执行If Image1 <> nil then Image1.free;结果只有最后一个不见了,而我再点击reset时出错了,通过watchlist看到Image1的值是 ([[csSubComponent],(out of bound) 4]) . Image1不会是数组吧,把以前的图片都放在里面了?