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;

「DataSet は編集または挿入モードではありません」というエラーが発生します。というわけで最初のものを使いました。

しかし、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

私はそれを理解します:

これは、Access データベースから Timage に JPG 画像を表示する方法です。

  1. Access データベース フィールドは OLE (または BLOB) です。
  2. このコードを使用して画像をデータベースに保存します

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

gallery は AdoTable で、Image は画像を含む Access フィールド名です。イメージを Delphi Timage コンポーネントに表示し直すには、次のようにします。

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 に答える