Delphi Programming / Object Pascal
[掲載 2000年12月12日] [更新 2016年04月19日] 印刷プレビュー制御コンポーネント |
印刷プレビュー制御コンポーネント
テストプログラム PageCount |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE(UP1) Pro |
頁数のプレビューと印刷 ( 先読み方式・複数頁の例 ) |
先読み方式では,描画が終了するまで総頁数は不明ですが,プレビュー開始時点では PageCount プロパティに総頁数の値が書込まれています.
そこで,このプログラムでは,OnBeforeView イベント内で PageCount プロパティを使用したコードを追加することによって,頁数と頁番号を表示するようにしています. |
|
図1
設計時画面 |
|
図2
実行画面
|
unit PageCountUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, plPrev;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
plPrev1: TplPrev;
procedure BitBtn1Click(Sender: TObject);
procedure plPrev1BeforeView(Sender: TObject; Page: Integer);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
//=============================================================================
// 10頁分を作成して表示
// ここではテストなのでこのコードを作成する段階で頁数はわかっているが,業務ア
// プリでは不明なこともある.
//=============================================================================
procedure TForm1.BitBtn1Click(Sender: TObject);
var
LPageStr : string;
i : Integer;
begin
plPrev1.BeginDoc;
//9回改頁を繰り返す
i := 1;
while True do begin
//頁番号の文字列を作成
LPageStr := IntToStr(plPrev1.PageNumber) + ' 頁目';
//文字のサイズ
plPrev1.FontSize(30);
//文字列を描画
plPrev1.TextOut(250, 300, LPageStr);
plPrev1.TextOut(250, 450, '先読み方式で頁番号を印刷する方法');
i := i+1;
if i > 10 then break;
//改頁
plPrev1.NewPage;
end;
plPrev1.EndDoc;
//最初は3頁目を表示する
plPrev1.PageNumber := 3;
plPrev1.ShowModal;
end;
//=============================================================================
// TplPrevのOnBeforeViewイベント処理
//
// OnBeforeViewイベントではCanvasに描画できる
// (OnBeforeViewイベントは逐次表示方式では無効)
//=============================================================================
procedure TForm1.plPrev1BeforeView(Sender: TObject; Page: Integer);
var
LPageStr : string;
begin
//文字のサイズ
plPrev1.FontSize(100);
//頁番号の文字列を作成
LPageStr := IntToStr(Page) + '/' + IntToStr(plPrev1.PageCount);
//X=105.0mm,Y=260.0mmに位置に文字列を描画
plPrev1.TextOutCC(1050, 2600, LPageStr);
end;
end.
|