Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2001年02月04日] [更新 2016年04月30日] Query 印刷コンポーネント
Query 印刷コンポーネント
イベント
動作確認等 図は Windows 7 U64(SP1) + Delphi XE(UP1) Pro で作成







イベント


Ver4.0 では,プレビューフォーム関係のイベントを追加しました.これにより,フォームを表示しなくてもプレビューフォームのイベントを作成することが可能となりました.


図1
イベント一覧




各頁プレビューまたは印刷前のイベント


OnBeforeView (Sender, Page)

各々の頁をプレビューまたは印刷する前に発生するイベントです.このイベント発生時点で頁数プロパティが確定しています.したがって,このイベントを利用すると総頁数の印刷が可能です.このイベント内では Canvas への描画が可能です.

引数 説明
Sender TObject コンポーネント自身
Page Integer これから表示または印刷する頁の番号


リスト1
総頁数をプレビュー印刷するコード
procedure TForm1.plQueryPrev1BeforeView(Sender: TObject; Page: Integer);
var
  LPageStr : string;
begin
  //文字のサイズ
  plQueryPrev1.FontSize(12);
  //頁番号の文字列を作成
  LPageStr := IntToStr(Page) + '/' + IntToStr(plQueryPrev1.PageCount);
  //X=105.0mm,Y=270.0mmに位置に文字列を描画
  plQueryPrev1.TextOutCC(1050, 2700, LPageStr);
end;




印刷しない描画用のイベント


OnNoPrintDraw(Sender, Page)

このイベント内に書いたコードは印刷しません.また描画のクリップもしません.印刷はしないが,プレビューはしたい描画に使用します.

引数 説明
Sender TObject コンポーネント自身
Page Integer 頁番号




最初の頁の描画開始前のイベント


OnReportStart(Sender, YPos)

引数 YPos の値を変更すると印刷開始 Y 座標値を変更できます.デフォルトは上マージンです.このイベント内で Canvas への描画が可能です.

引数 説明
Sender TObject コンポーネント自身
var YPos Integer 上マージンの値
このY座標値から罫線を描画する




全頁描画終了後のイベント


OnReportEnd(Sender, Page, YPos)

全頁分の描画が終了する直前に発生します.このイベント後に最終頁のメタファイルイメージの作成が終了します.このイベント内では Canvas への描画が可能です.

引数 説明
Sender TObject コンポーネント自身
Page Integer 現在の頁番号で,PageCount プロパティに等しい値
YPos Integer 描画を終了した頁の一番下の横罫線の Y 座標値




ヘッダ部開始イベント


OnHeader(Sender, Page, YPos)

他のイベント内でもヘッダ部やフッタ部に描画コードを書くことはできますが,このイベントではヘッダマージンの値を引数から取得できます.このイベント内では Canvas への描画ガ可能です.

引数 説明
Sender TObject コンポーネント自身
Page Integer 頁番号
YPos Integer ヘッダマージンの値




フッタ部開始イベント


OnFooter(Sender, Page, YPos)

他のイベント内でもヘッダ部やフッタ部に描画コードを書くことはできますが,このイベントでは,フッタマージンの値を引数から取得できます.このイベント内では Canvas への描画が可能です.

引数 説明
Sender TObject コンポーネント自身
Page Integer 頁番号
YPos Integer フッタマージンの値




行セルデータの描画開始前のイベント


OnBeforePrintCell(Sender, 
                  Rect, 
                  ACol, 
                  ARow, 
                  PageRow, 
                  Text, 
                  fDataRow)

引数の Text の値を変更すると,描画する内容を変更することができます.
このイベント内では,Canvas への描画が可能です.

引数 説明
Sender TObject コンポーネント自身
Rect TRect ACol と ARow で決まる矩形領域の TRect 構造体
ACol Integer セルの列番号
一番左が 0
ARow Integer

fDataRow = True の時データ行の番号で 0 からの値
0 はタイトル行
fDataRow = False の時は集計行
Row = 0 が一番内側の小計行

PageRow Integer この頁だけの行番号
頁が変わる度に 0 から始まり,0 はタイトル行
var Text String セルの文字列
このテキストを変更すると描画内容を変更できる
fDataRow Boolean True の時はデータ行で.False の時は集計行




行セルデータ描画時のイベント


OnBeforePrintCell(Sender, 
                  Rect, 
                  ACol, 
                  ARow, 
                  PageRow, 
                  Text, 
                  fDataRow)

このイベントを定義すると,全てのセルのデータを描画しません.罫線は描画します.セルに独自の内容を描画したい場合に使用します.このイベント内では,Canvas への描画が可能です.

引数 説明
Sender TObject コンポーネント自身
Rect TRect ACol と ARow で決まる矩形領域の TRect 構造体
ACol Integer セルの列番号
一番左が 0
ARow Integer

fDataRow = True の時はデータの行番号
0 から始まる値.ただし 0 の時はタイトル行
fDataRow = False の場合は集計行
Row = 0 の時が一番内側の小計行

PageRow Integer この頁だけの行番号
頁が変わる度に 0 から始まり,0 はタイトル行
Text String セルの文字列
OnBeforezPrintCell イベントと違い,このテキストを変更しても効です.参照用
fDataRow Boolean True の時はデータ行
False の時は集計行




グループ描画後のイベント


OnAfterGroupPrint(Sender, ChangePage, YPos)

Grouping を Ture にした項目の描画が終了する度に発生します.複数の項目を Ture にしている場合は,最初の項目のグループ (項目値が同じデータ) を描画した後,またはグループ計 (小計) の描画後に発生します.
引数の YPos の値を変更すると,次の行と間に空白を挿入することができます.また,PageHeight (PrintHeight) と CellHeight の値から,後何行描画可能かも計算できます.このイベント内では,Canvas への描画が可能です.

引数 説明
Sender TObject コンポーネント自身
ChangePage Boolean True の時は印刷後改頁する
var YPos Integer 次のデータの描画開始Y座標値
ChangePage が True の時は意味のない値







印刷ダイアログ表示時のイベント


OnPrintBtnClick(Sender, CanPrint)

プレビューフォームの [印刷 ]ボタンで,印刷ダイアログを表示した時に発生します.このイベント内では Canvas への描画はできません.

引数 説明
Sender TObject プレビューフォーム
var CanPrint Boolean この値を False にすると印刷しない
デフォルトは Ture で印刷する




印刷時のイベント


OnPrint(Sender, Page)

各頁のメタファイをプリンタに出力した後に発生します.このイベント内では,Canvas への描画はできません.

引数 説明
Sender TObject 本コンポーネント
Page Integer 出力した頁番号




プレビューフォームを表示する時のイベント


OnFormShow (Sender)

プレビューフームを表示する際に発生します.TForm の OnShow イベントと同様の使い方ができます.プレビューフォームのユニット内に印刷用のコードを書く時は,この OnFormShow 内に書きます.ただし,Canvas への描画はできません.

引数 説明
Sender TObject プレビューフォーム




プレビューフォームが閉じた時のイベント


OnFormClose(Sender, Action)

プレビューフームを閉じた時に発生します.TForm の OnClsoe と同じです.
このイベント内では,Canvas への描画はできません.

引数 説明
Sender TObject プレビューフォーム
var Action TCloseAction TForm の Action と同じ




プレビューフォームを閉じる時のイベント


OnFormCloseQuery(Sender)

Close メソッドが呼ばれた時,あるいは,システムの閉じる動作を行った時に発生します.TForm の OnCloseQuery と同じです.このイベント内では,Canvas への描画はできません.

引数 説明
Sender TObject プレビューフォーム
var CanClsoe Boolean TForm の CanClose と同じ




プレビューフォームが破棄される時のイベント


OnFormDestory(Sender)

プレビューフォームが破棄された時に発生します.TForm の OnDestroy と同じです.このイベント内では,Canvas への描画はできません.

引数 説明
Sender TObject プレビューフォーム