0

すべての Delphi Guru によろしく :)

Access 2010 にテーブルがあり、列タイプの 1 つは「ProductImage」という名前の OLE オブジェクトです。その列を使用してビットマップ イメージを保存します。

問題は、Delphi 7 で DBImage または TImage を使用してその画像を表示するにはどうすればよいですか? 私はこれを試しました

procedure TF_Search2.DBGrid1CellClick(Column: TColumn); begin Image7.Picture.Assign(DataModule1.T_Products.FieldByName('ProductImage').LoadFromFile('c:\test.jpg')); end;

エラーです : この部分にパラメータが必要です 'LoadFromFile('c:\test.jpg')' "TBlobField" も使用しようとしましたが、エラーが発生しました : 宣言されていない識別子 TBlobField 単位で使用する必要があると読みました。意味がわかりません。インストールフォルダーに何かを追加する必要がありますか?

どんな助けでもいただければ幸いです。

ありがとうございました

4

1 に答える 1

2

このフィールドには、OLE ヘッダーも含まれています。昔はこれをスキップしましたが(最初の79バイトだと思います)、コードが見つかりません。ただし、インターネットには常に解決策があります。これは私の「スキップ」ソリューションよりも優れています。

アクセスDBから画像を読み書きする方法(4ページ

編集:あなたの問題は構文にあることがわかりました。

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 から画像を取得することです。

アクセスデータベースから画像データを読み込み、画像コンポーネントに表示したいですか?

リンクの手順に従ってください。

EDIT:私が修正した(そしてテストできない)いくつかの非常に古いコードを見つけました:

 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;
于 2013-07-05T05:43:38.637 に答える