16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"ACCESS97、OLE ビットマップ表示"
この発言に対し以下のコメントが寄せられています
#00332 ytm さん RE:ACCESS97、OLE ビットマップ表示
☆説明
ODBC経由でACCESS97のOLE オブジェクト型フィールドにあるビットマップ画像
を表示します。
('gazou'フィールドにビットマップ画像がある)
☆準備
ODBC,BDE の設定。
フォームにTTable,TDataSourceを置き、TScrollBoxの中にTImageをセット
します。
☆補足
Delphi3.1 でテスト。
80バイトスキップは処理の手抜きなので、'BM'を検索するルーチンを埋め込む
と完璧かも(^^;
[サンプルソース]
----------------------------------------------------------------------
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
mem: TMemoryStream;
bmp: TBitmap;
blob: TBlobField;
begin
{ Access97、OLE オブジェクト型のビットマップ表示 }
// イメージクリア
Image1.Picture := Nil;
// 初期化
mem := TMemoryStream.Create;
bmp := TBitmap.Create;
blob := TBlobField( Table1.FieldByName('gazou') );
mem.SetSize( blob.BlobSize );
// OLE 情報(80バイト)をスキップ(^^;
blob.SaveToStream( mem );
mem.Seek( 80, soFromBeginning );
bmp.LoadFromStream( mem );
// イメージ描画
Image1.Height := bmp.Height;
Image1.Width := bmp.Width;
Image1.Canvas.Draw( 0, 0, bmp );
// 念のため
ScrollBox1.Refresh;
// 後処理
bmp.Free;
mem.Free;
end;
----------------------------------------------------------------------
97/12/22(月) 10:07pm LDM03756 佐藤 充男
Original document by 佐藤 充男 氏 ID:(LDM03756)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|