喫茶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;

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

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

[5093] Re:タックシール印刷の画像印刷について返信 削除
2011/8/6 (土) 00:42:15 Mr,XRAY
▼ ニールさん

失礼しました.今読み返したら,

> データベース上に画像のファイルパスのフィールドがあり

なんですね.「画像のファイルパス」は分かっていることになりますね.
ということは,その画像のパスから画像を取得して表示してください.
手順は,同じように,OnBeforeLabelDrawイベント等で処理することに
なるでしょう.

  BMP.LoadFromFile(画像のパス);
ですね.


[5149] Re2:タックシール印刷の画像印刷について返信 削除
2011/8/25 (木) 12:05:45 ニール
Mr,XRAYさん

返信が遅くなり申し訳ありません。

OnBeforeLabelDrawイベントにて

imagefile:=ファイルパスで
うまく印刷できました。

有難う御座いました。。


> ▼ ニールさん
>
> 失礼しました.今読み返したら,
>
> > データベース上に画像のファイルパスのフィールドがあり
>
> なんですね.「画像のファイルパス」は分かっていることになりますね.
> ということは,その画像のパスから画像を取得して表示してください.
> 手順は,同じように,OnBeforeLabelDrawイベント等で処理することに
> なるでしょう.
>
>   BMP.LoadFromFile(画像のパス);
> ですね.


[5150] Re3:タックシール印刷の画像印刷について返信 削除
2011/8/25 (木) 13:07:07 Mr.XRAY
▼ ニールさん

> imagefile:=ファイルパスで
> うまく印刷できました。


おっ,よかったです.
そうか,こういう方法もありましたね.失礼しました (^^;
拙作のコンポ類は,どれも単機能ですから,自力でコードを書くのが原則
となっています.あしからず.

>返信が遅くなり申し訳ありません。

気にしないでください.
ここは喫茶店ですので,あまり入り浸っていると,サボっているとみなされ,
「解雇」されることがあるかも知れません(笑)
これに懲りず,また機会がありましたら.是非お越しください.


INCM/CMT
Cyclamen v3.82