0

为什么这段代码不起作用:

使用此代码保存图像就可以了(我也在报告中看到了图像):

   gallery.append;
   gallery.FieldByName('Image').Assign(pic.Picture.Bitmap);
   gallery.post;

但是这段代码:

Gallery.Insert;
S := CreateBlobStream(gallery.FieldByName('Image'), bmWrite);
Image1.Picture.Bitmap.SaveToStream(S);
gallery.Post;
S.Free;

导致错误“数据集未处于编辑或插入模式”。所以我用了第一个。

但将其恢复为 Timage 中的形式会导致“位图格式无效”

var S : TStream ;
s := gallery.CreateBlobStream(gallery.FieldByName('Image'), bmRead);
Pic.Picture.Bitmap.LoadFromStream(S);
s.Free;

错误显示在任何图像上。我也使用 About.com 的教程尝试了 DBimage 并不断出错。数据库是 Access 2010,图像字段是 OLE (blob)。有点卡住了。

s

4

1 回答 1

0

我想通了:

这是如何将 JPG 图像从 Access 数据库显示到 Timage:

  1. Access 数据库字段是 OLE(或 blob)。
  2. 使用此代码将图像保存到数据库

    画廊。附加;gallery.FieldByName('Image').Assign(pic.Picture.Bitmap); 画廊.post;

Gallery 是 AdoTable,Image 是包含图像的 Access 字段名称。现在将图像显示回 Delphi Timage 组件: 1. 在 Uses 子句中,包含使用单位的那个(File --Use Unit)放入:

Uses Jpeg

然后使用此代码显示图像:

var
jpg:TJPegImage;

begin
jpg :=TjpegImage.Create;
jpg.Assign(TblobField(gallery.FieldByName('Image')));
pic.Picture.Bitmap.Assign(jpg);
jpg.Free;
end;

多么酷啊。

于 2013-02-10T02:45:39.533 回答