我试过很多方法,都不灵。
如果你有好办法,请回附,QQ:199577850
或、Mail to: SEFox@sohu.com
我在网上下了一个关于使用 Image 读取 Access 中 OLE 类型字段的程序代码
想用来读取我的库中的 OLE 类型字段,这个字段是保存 BMP 图片的,名称为 Photo
可是下载的程序代码总是报错“位图图像无效”
而我的库设计和图片格式均正确
不知何故,请高手分析一下
以下是我下载的代码部分
是用于处理 OLE 字段的过程
procedure LoadImageFromField(APicture: TPicture; AField: TBlobField);
var
ABitmap: TBitmap;
AStream: TMemoryStream;
begin
if AField.IsNull then
Exit;
AStream := TMemoryStream.Create;
try
AField.SaveToStream(AStream);
// Skip OLE storage header
AStream.Seek(78, soFromBeginning);
ABitmap := TBitmap.Create;
try
ABitmap.LoadFromStream(AStream);
APicture.Graphic := ABitmap;
finally
ABitmap.Free;
end;
finally
AStream.Free;
end;
end;
经查,错误总是出现在 ABitmap.LoadFromStream(AStream);
将此行删除,程序可以正常运行,但没有图片显示
在 ADODataSet1 的 AfterScroll 事件中呼叫 LoadImageFromField 函式:
procedure TForm1.ADODataSet1AfterScroll(DataSet: TDataSet);
begin
LoadImageFromField(
Image1.Picture,
DataSet.FieldByName('Photo') as TBlobField
);
end;
请高手过目,并指出存在的问题!!!!!
谢谢