喫茶XRAYトップページ

[スレッド全体
]

[5091] タックシール印刷の画像印刷について返信 削除
2011/8/5 (金) 17:37:19 ニール
XRAY様
いつも良く利用させていただいてます。

タックシールについて御質門なのですが
データベース上に画像のファイルパスのフィールドがあり
そのフィールドを使って、画像を印字したいのですが
どのように設定すれば、よろしいでしょうか?

カラム設定は
 DrawMethod:StretchDrawImage
 fieldname:DBの項目名
 
ご教示下さい。
宜しくお願いします。

[5092] Re:タックシール印刷の画像印刷について返信 削除
2011/8/5 (金) 21:51:03 Mr,XRAY
▼ ニールさん,こんにちは.

> データベース上に画像のファイルパスのフィールドがあり
> そのフィールドを使って、画像を印字したいのですが


画像やテキストデータ等,いわゆるBlob型とかバイナリデータ等は
データベースで扱い方が違う場合があります.またフォントサイズや描画の方式も
その度に違う場合も考えられます.
そこで,以下のイベント等で処理してください.

OnAfterLabelDraw
OnBeforeLabelDraw
OnBeforeDataDraw

以下は,OnBeforeLabelDrawイベントを使用した例です.
BDEで,ParadoxのDBDEMOSのbiolife.dbテーブルのGraphic項目を印刷しています.
Windows XP(SP3) + Delphi 2010 Pro

http://mrxray.on.coocan.jp/Delphi/zipothers/plTackPrev_DBGraphic.zip

procedure TForm1.plTackPrev1BeforeLabelDraw(Sender: TObject; Rect: TRect; ARow,
  ACol, LabelNo: Integer);
var
  BMP : TBitmap;
begin
  BMP := TBitmap.Create;
  try
    //ここはデータベースによって異なる
    BMP.Assign(TBlobField(Table1.FieldByName('Graphic')));

    //RectはラベルのTRectなので,この値を変更すれば描画位置変更可能
    //もちろん,他のTCanvasの描画メソッドも使用可能
    Rect.Left  := Rect.Left + 100;
    Rect.Right := Rect.Left + 500;
    plTackPrev1.Canvas.StretchDraw(Rect, BMP);
  finally
    BMP.Free;
  end;
end;

よろしく.何か問題がありましたら,またお願いします.

ちょっと太り気味の魚になっている
ちゃんと縦横比を考慮した方がいいだろう

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82