既然你在ACCESS数据库中的字段插入的是BMP位图的OLE 对象,那么这个字段的内容就不光是BMP图象, 还有OLE服务器的信息.
如果你要用图形控件显示字段中存放的位图,首先需要通过"流"的方式把字段内容读到一个内存流(MemoryStream)中然后把其中头部的Ole服务器信息剥除,只除下BMP位图信息,然后将位图信息Assign到一个图形控件上(不需要是数据感应的图形控件)。
还有一个方法, 就是通过容器来显示位图, 容器直接从字段的流中读取数据, 然后自动启动OLE服务器(此为画板程序), 通过OLE服务器来显示编辑位图。
如果你要用图形控件显示字段中存放的位图,首先需要通过"流"的方式把字段内容读到一个内存流(MemoryStream)中然后把其中头部的Ole服务器信息剥除,只除下BMP位图信息,然后将位图信息Assign到一个图形控件上(不需要是数据感应的图形控件)。
还有一个方法, 就是通过容器来显示位图, 容器直接从字段的流中读取数据, 然后自动启动OLE服务器(此为画板程序), 通过OLE服务器来显示编辑位图。
利用容器我不知LIGHTTOP试过没有,我使用OLE容器来读这个流,也不是OLE格式的流,它应该是一个PACKAGE.
对不起,具体哪一期,我忘了!
读入时:aStream := TBlobStream.Create(TBlobField(theBMPField), bmRead);
Image.Picture.Graphic.LoadFromStream( aStream );
aStream.Free;写时:
aStream := TBlobStream.Create(TBlobField(theBMPField), bmWrite);
Image.Picture.Graphic.SaveToStream( aStream );
aStream.Free;正式用时,可能会需要测试空值等情况、加上try...finally等。如果你仅是存图片的话,这个应该能满足你的要求。
如果你要用Ole的话,那得另想办法了。
-------
阿贵
跳出三界外
不在五行中
-------