从Access到Delphi 7显示位图图像
向所有德尔福大师致意:) 我在Access 2010中有一个表,其中一个列类型是名为“ProductImage”的OLE对象 我使用该列保存位图图像 问题是,如何在Delphi7中使用DBImage或TImage显示该图像? 我试过这个从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
过程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;