从Access到Delphi 7显示位图图像

从Access到Delphi 7显示位图图像,delphi,ms-access,Delphi,Ms Access,向所有德尔福大师致意:) 我在Access 2010中有一个表,其中一个列类型是名为“ProductImage”的OLE对象 我使用该列保存位图图像 问题是,如何在Delphi7中使用DBImage或TImage显示该图像? 我试过这个 过程tfu Search2.DBGrid1CellClick(列:TColumn); 开始 Image7.Picture.Assign(DataModule1.T_Products.FieldByName('ProductImage').LoadFromFile

向所有德尔福大师致意:)

我在Access 2010中有一个表,其中一个列类型是名为“ProductImage”的OLE对象 我使用该列保存位图图像

问题是,如何在Delphi7中使用DBImage或TImage显示该图像? 我试过这个

过程tfu Search2.DBGrid1CellClick(列:TColumn);
开始
Image7.Picture.Assign(DataModule1.T_Products.FieldByName('ProductImage').LoadFromFile('c:\test.jpg'));
结束

错误:此部分中需要参数“LoadFromFile('c:\test.jpg')” 我还尝试使用“TBlobField”,但我得到了一个错误:未声明的标识符TBlobField 我读到它应该在单位和用途。我不明白那是什么意思。 我应该在安装文件夹中添加一些东西还是什么

任何帮助都将不胜感激


谢谢

此字段还包含OLE标头。我以前跳过了这个(我想是前79个字节),但是我再也找不到代码了。然而,互联网一如既往地有解决方案。我觉得这个比我的“跳过”解决方案好

以下是其中之一:

编辑:我刚刚看到你的问题是你的语法

procedure TF_Search2.DBGrid1CellClick(Column: TColumn); 
begin 
  Image7.Picture.Assign(DataModule1.T_Products.FieldByName('ProductImage').LoadFromFile('c:\test.jpg')); 
end;
这不是有效的delphi语法,而且相当混乱。
Picture.Assign
方法需要一个Picture对象。因此,您首先要做的是从access DB中获取图片

是否要从access db读取图像数据并将其显示在图像组件中

按照链接中的步骤操作

编辑:我确实发现了一些我修改过的非常旧的代码(并且无法测试):


“但它不起作用”永远不够。它以什么方式失败?错误消息等等。你好@david,谢谢你的回复。是的,它是错误的:在“LoadFromFile('c:\test.jpg')这一部分中需要参数。除了代码之外还有其他方法吗?请编辑问题以包含缺少的详细信息。您好@Alzamir,谢谢您的链接。我会尝试一下,然后返回给您,结果是这部分出现了错误:“function JPEGStartInBlob(PicField:TBlobField):integer;VarBS:TADOBlobStream;缓冲区:字;hx:string;'错误:未声明的标识符TBlobField,未声明的标识符TADOBlobStream为什么?顺便说一句,它在几分钟前就工作了。在access上添加新数据后,出现错误“位图无效!”我尝试bmp,jpeg不起作用。我应该在access btw中保存什么类型的图像?您可以保存(并打开)应用程序支持的所有类型的图像。对于JPG,您必须使用TJpegImage;对于PNG,您必须使用TPngImage;对于BMP,您必须使用TBitmap等。因此,您还必须使用所有支持的类型存储图像类型或测试。试用errorHi@SirRufo,我在访问时将图像保存在.BMP中,但仍然存在相同的错误。你知道我如何使用TBlogField吗?它使我这一方始终显示未声明的标识符。
 aBitmapStream := TMemoryStream.Create;

 tblDrawing_BitmapColumnBLobField.SaveToStream (aBitmapStream);

 // This hack enables Access BMP-Blobs to be imported 
 aBitmapStream.Seek (78,soFromBeginning);
 myBitmap := TBitmap.Create;
 myBitmap.LoadFromStream (aBitmapStream);

 Image7.Picture.Assign (myBitmap);

 myBitmap.Free;
 aBitmapStream.Free;