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







イベント


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


図1
イベント一覧




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


OnBeforeView(Sender, Page)

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

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


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




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


OnNoPrintDraw(Sender, Page)

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

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




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


OnReportStart(Sender, YPos)

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

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




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


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)

各々のセルのデータの描画前に発生します.Canavas への描画が可能です.

引数 説明
Sender TObject コンポーネント自身
Rect TRect ACol と ARow で決まるセル描画矩形領域の TRect 構造体
ACol Integer セルの列番号で,一番左が 0
ARow Integer データの行番号で 0 から始まる値
ただし,0 はタイトル行
PageRow Integer この頁だけの行番号
頁が変わる度に0から始まり,0 はタイトル行
var Text String セルの文字列
このテキストを変更すると,該当するセルの描画内容を変更するができる




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


OnPrintCell(Sender, Rect, ACol, ARow, PageRow, Text)

このイベントを定義するとセルの文字列を描画しません.このイベント内では Canvas への描画が可能です.セルのテキストを全て自前で描画する時に利用できます.
OnBeforePrintCell イベントでも,引数の Text の値を空文字にすれば,セルに文字列を描画しないようにすることができます.

引数 説明
Sender TObject コンポーネント自身
Rect TRect ACol と ARow で決まるセル描画矩形領域の TRect 構造体
ACol Integer セルの列番号で,一番左が 0
ARow Integer データの行番号で0から始まる値
ただし 0 はタイトル行
PageRow Integer この頁だけの行番号
頁が変わる度に 0 から始まり,0 はタイトル行
Text String セルの文字列.参照用







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


OnPrintBtnClick(Sender, CanPrint)

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

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




印刷時のイベント


OnPrint(Sender, Page)

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

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




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


OnFormShow(Sender)

プレビューフームを表示する際に発生します.TForm の OnShow イベントと同様の使い方ができます.プレビューフォームの unit 内に印刷用のコードを書く時は,この 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 プレビューフォーム