网上说可以这样对一个Timage控件进行判断这个控件中是否有图像。
1.如果Timage中放的是bmp图像:
if img1.Picture.Bitmap.Empty = true then
showmessage('没有图像');
2.如果Timage中放的是jpg图像
if img1.Picture.Graphic.Empty = true then
showmessage('没有图像');
但事实是,如果你用第二条语句对JPG进判断时,会出现非法访问内存的情况,原因是什么呢?原因可能是因为Graphic是nil,所以在Graphic.Empty中出现非法访问。那怎么办呢?改为下面的语句:
if img1.Picture.Graphic = nil then
showmessage('没有图像');
改成这样后,如果使用img1.Picture.Assign对Timage加入图像后,img1.Picture.Graphic也不为空了,如果用img1.Picture.Assign(nil)对Timage进行清空后,img1.Picture.Graphic也成为空了,所以img1.Picture.Graphic = nil 很好用。如果想用img1.Picture.Bitmap = nil来进行判断是不行的,因为无论是刚创建完还是使用img1.Picture.Assign(nil),Timage.Picture.Bitmap都不为空,所以对于Bitmap还是要用img1.Picture.BitMap.Empty = ture来判断。代码片段可以看这个网址:http://www.efg2.com/Lab/Library/UseNet/2000/1128.txt
另外,想判断Timage中的图像是bmp还是jpg,可以用下面的两行语句
img1.Picture.Graphic is TBitmap //bmp
img1.Picture.Graphic is TJPEGImage //jpg