Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2000年12月12日] [更新 2016年04月25日] 印刷プレビュー制御コンポーネント
印刷プレビュー制御コンポーネント
用紙と印刷関係のプロパティ
動作確認等 -





凡例  published
 public
 ReadOnly



用紙サイズなどの値


用紙サイズ等の値に関係するプロパティです.
ViewWidth, ViewHeight は,例えば,印刷に使用する用紙のある領域内にだけに印刷する場合,その領域だけをプレビュー表示する等の用途に利用できます.

[備考]
用紙の幅,長さと,印刷可能な幅,長さは,プリンタ設定コンポーネントの同名のプロパティと意味は同じですが,印刷プレビュー制御コンポーネントでは,0.1 mm 単位の値です.


図1
用紙サイズとページの幅と高さ
  • 点線の内側が描画可能 (印刷可能) 領域
  • 同じ用紙サイズでも,プリンタによって違うことがある

 PaperWidth Integer 用紙の幅
 PaperHeight Integer 用紙の長さ
 PageWidth Integer 用紙の印刷可能幅
 PageHeight Integer 用紙の印刷可能長さ
 ViewWidth Integer プレビュー画面上の用紙幅
デフォルトでは用紙幅と同じ
プリンタを変更すると,PaperWidth と同じ値に初期化
プリンタ指定のあとに設定する
 ViewHeight Integer プレビュー画面上の用紙長さ
デフォルトでは用紙長さと同じ
プリンタを変更すると,PaperHeight と同じ値に初期化
プリンタ指定のあとに設定する
 PaperRatio Double 用紙の縦横比 (PaperHeight / PaperWidth)
※ 印刷可能範囲の縦横比のプロパティはない
 ViewPaperRatio Double プレビュー画面上の用紙の縦横比で,
ViewHeight / ViewWidth の値




印刷オフセット


印刷オフセットは,プリンタの物理的な構造からくる印刷可能範囲に関係する値です.
このコンポーネントでは,右端と下端のオフセットの定義が通常のもと違っていますが,既にこのコンポーネントを利用したアプリケーションを多く作成してしまっているため,変更の予定はありません.ご了承下さい.

なお,プリンタの設定を変更してもオブジェクトインスペクタ上の値は自動では変化しません.IDE 起動時に読み込まれたプリンタの設定に基づいて表示されます.
オブジェクトインスペクタでプリンタの設定を変更した場合,上下左右のオフセットの値を,0 等の適当な値をセットすると再取得することができます.

[備考]
上下左右のオフセットの値は,プリンタ設定コンポーネントの同名のプロパティと意味は同じですが,印刷プレビュー制御コンポーネントでは,0.1 mm 単位の値です.


図2
オフセット値
  • 点線の内側が描画可能 (印刷可能) 領域
  • オフセット値は,プリンタによって異なる
  • 左と上のオフセット値も,使用する用紙によっても異なる場合がある

 LeftOffset Integer 用紙左端のオフセット値
この座標値より左に描画コードを書いてもクリップされて印刷しない
 RightOffset Integer 用紙右端のオフセット値
この座標値より右に描画コードを書いてもクリップされて印刷しない
 TopOffset Integer 用紙上端のオフセット
この座標値より上に描画コードを書いてもクリップされて印刷しない
 BottomOffset Integer 用紙下端のオフセット値
この座標値より下に描画コードを書いてもクリップされて印刷しない




印刷関係マージン


印刷関係マージンとなっていますが,以下のプロパティは,グローバル変数として利用するための変数類です.主に印刷のマージンの設定での利用を想定して,Margin という名前にしています.
このコンポーネント自身は,これらの値を使用していません.実行中にも操作はしていません.利用者がグローバル変数として利用できるように実装している変数類です.ただし,便宜上,初期値を設定しています.

プリンタの設定を変更してもオブジェクトインスペクタ上の初期値は自動では変化しません.IDE 起動時に読み込まれたプリンタの設定に基づいて表示されます.
オブジェクトインスペクタでプリンタの設定を変更した場合,いずれかのマージンの値を,0 等の適当な値をセットすると初期化することができます.


[備考 1]
グローバル変数は,利用者が通常の方法で定義しても利用することができますが,コンポーネントのメンバとして定義してあれば,そのコンポーネントで使用する変数であることが明確になり,通常のグローバル変数との区別が容易になります.

[備考 2]
拙作のタックシール印刷,DBGrid 印刷,Query 印刷の各コンポーネントでは,これらのプロパティを,印刷領域の設定用,つまり,文字通り印刷マージンの設定に使用しています.


 LeftMargin Integer 初期値は LeftOffset と同じ値
設計時は,LeftOffset よりも小さい値には設定できない
 RightMargin Integer 初期値は RightOffset と同じ値
設計時は,RightOffset で決まる値より小さい値には設定できない
 TopMargin Integer 初期値は TopOffset と同じ値
設計時は,TopOffset よりも小さい値には設定できない
 BottomMargin Integer 初期値は BottomOffset と同じ値
設計時は,BottomOffset で決まる値より小さい値には設定できない
 HeaderMargin Integer 初期値は TopOffset と同じ値
設計時は,TopMargin より大きな値には設定できない
 FooterMargin Integer 初期値は BottomOffset と同じ値
設計時は,BottomMargin より大きな値には設定できない




印刷位置の微調整


規定用紙に印刷する場合など,印刷位置を調整したい時に使用します.印刷位置は,プリンタを変更すると,変わる場合があります.PrintOffsetX と PrintOffsetY プロパティを設定することによって,元の描画コードを変更せずに印刷位置を調整することが可能です.

 PrintOffsetX Integer 印刷位置の微調整に使用
この値が正の場合,印刷位置が全体に右に移動
プレビューは変化しない
 PrintOffsetY Integer 印刷位置の微調整に使用
この値が正の場合,印刷位置が全体に下に移動
プレビューは変化しない




印刷する頁の範囲


Print メソッドでプレビューなしで直接印刷する場合などに使用します.プレビューなしで直接印刷する場合は,必ず指定します.プレビューする場合は,印刷のダイアログで指定します.

 PrintFromPage Integer 印刷開始頁の指定
デフォルトは 1
TPrintDialog の FromPage と同じ意味
 PrintToPage Integer 印刷の終了頁の指定
デフォルトは総頁数
TPrintDialog の ToPag と同じ意味




その他


上記以外のプロパティです.

 ViewClip Boolean 印刷ではクリップされてしまう領域をプレビューでは表示可能にするためのフラグ
 PaperColor TColor プレビュー時だけ有効な用紙の色
印刷時は塗潰しない
色付きの規定帳票類に印刷する際に,使用する用紙の間違をなくすための視覚効果を狙ったもの
印刷時に用紙全体を塗潰ししたい場合は,
Canvas の FillRect メソッ等を使用する
 Printing Boolean 印刷中のフラグ
TPrinter の Printing プロパティと同じ値
このプロパティを利用すると,逐次表示方式の場合,コード中に印刷しない部分を指定することが可能
 AcrobatOut Boolean プリンタに Acrobat を指定すると True となる
 InversePrint Boolean 逆方向からの印刷フラグ
 UseOriginPaperSize Boolean この値を True にすると,強制的に設計時の用紙サイズと印刷の方向にする
デフォルトは False




印刷しないコード ( 逐次表示方式のみ )


逐次表示方式の場合,Printing プロパティを利用することで,描画コードの中にプリンタには出力しないコードを含めることが可能です.以下のリストでは begin ~ end で囲まれた部分は,プレビューはしますが,印刷はしません.また,プレビューだけはして,実際の印刷はしないコードを書くためのイベント,OnNoPrintDraw もあります.

この機能は,例えば帳票類への印刷で,プレビューの背景に,その帳票のイメージを表示するような用途に利用できます.



リスト1 
 //印刷中でなければ実行
 if not(plPrev1.Printing) then begin
   plPrev1.Canvas.TextOut(500, 400, 'この部分は印刷しません');
 end;




逆方向からの印刷 ( 180 度回転印刷 )


プリンタドライバによってはこの機能を備えているものがあります.InversePrint プロパティは,印刷プレビュー制御コンポーネントでこの機能を実現するためのものです.True にすると,通常とは反対方向から印刷します.この 180 度回転印刷は,出力先のプリンタ,使用する用紙サイズなどによっても精度が違う場合があります.正方向との印刷結果にズレが生じる場合があります.印刷位置調整プロパティなどで調整して使用してください.
プリンタにもよると思いますが,プリンタが実装してる同じ機能よりも精度はよいようです.

プリンタの上下左右のオフセット値が違うことがあります.特に上端のオフセットは小さく,下端のオフセットが大きい場合,用紙の下部に印刷できないことがあります.そのような時に,印刷方向を逆にすると,印刷の欠落を防ぐことができることがあります.


[備考]
プリンタドライバがこの機能をサポートしている場合,このプロパティの設定が無効になる場合があるようです.実際にどの方向から印刷されるか確認が必要です.


図3
逆方向印刷プロパティ
  • 通常 (左図) と逆方向からの印刷 (右図)