Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2000年12月12日] [更新 2016年04月19日] 印刷プレビュー制御コンポーネント
印刷プレビュー制御コンポーネント
テストプログラム ScallingDraw
動作確認等 Windows 7 U64(SP1) + Delphi XE(UP1) Pro







動作確認テスト ( 先読み方式 )


確かに 0.1 mm 単位の指定で描画できることを確認するためのテストです.
プリンタ設定コンポーネントのテストに同名のプログラムがありますが,こちらは当然ですがプレビューができます.コンポーネントの Canvas プロパティを使用したものと,描画用の追加メソッドを使用したコードのものがあります.


図1
設計時の画面
  • 印刷プレビューコンポーネントを配置
  • ボタンは上から Button1, 2, 3
図2
実行結果
  • どのボタンでも同じ結果となる

リスト1
テストプログラムのコード
unit ScallingDrawUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, plPrev, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    plPrev1: TplPrev;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation

uses
  Printers;

{$R *.DFM}

//=============================================================================
//  ShowModalメソッドでプレビュー表示
//  先読み方式のコード
//
//  描画するのは幅100.0mm,縦120.0mmの四角形.線の太さは0.5mm.
//  描画は10分の1mm単位で行う.   
//=============================================================================
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  LText : string;
begin
  //印刷する文字列
  LText := '印刷テスト';
  plPrev1.Title := 'モーダル表示';

  //描画コード開始
  plPrev1.BeginDoc;
  try
    //線の太さは0.5mm
    plPrev1.Canvas.Pen.Width := 5;
    //左から50.0mm上から80.0mmで幅100.0mm,縦120.0mmの四角形
    plPrev1.Canvas.Rectangle(500, 800, 1500, 2000);
    //文字の高さを10.0mmに
    plPrev1.Canvas.Font.Height := 100;
    //四角形の左上に文字列Textを描画
    plPrev1.Canvas.TextOut(500, 800, LText);
    //印刷する文字列の高さ確認のための線を引く}
    plPrev1.Canvas.Pen.Width := 1;
    plPrev1.Canvas.MoveTo(500, 900);
    plPrev1.Canvas.LineTo(1500, 900);
  finally
    //描画コード終了
    plPrev1.EndDoc;
  end;

  //プレビュー開始
  plPrev1.ShowModal;
end;

//=============================================================================
//  Showメソッドでプレビュー表示
//  先読み方式のコード
//=============================================================================
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  LText : string;
begin
  LText := '印刷テスト';
  plPrev1.Title := 'モードレス表示';

  plPrev1.BeginDoc;
  try
    plPrev1.Canvas.Pen.Width := 5;
    plPrev1.Canvas.Rectangle(500, 800, 1500, 2000);
    plPrev1.Canvas.Font.Height := 100;
    plPrev1.Canvas.TextOut(500, 800, LText);
    plPrev1.Canvas.Pen.Width := 1;
    plPrev1.Canvas.MoveTo(500, 900);
    plPrev1.Canvas.LineTo(1500, 900);
  finally
    plPrev1.EndDoc;
  end;

  plPrev1.Show;
end;

//=============================================================================
//  先読み方式のコード
//  印刷プレビューコンポーネント専用の描画メソッドを使用する例
//  これらのメソッドの引数は,X座標の組,Y座標の組順となっている.
//=============================================================================
procedure TForm1.BitBtn3Click(Sender: TObject);
var
  LText : string;
begin
  LText := '印刷テスト';
  plPrev1.Title := '印刷プレビューコンポの描画メソッド使用';

  plPrev1.BeginDoc;
  try
    plPrev1.PenWidth  (5);
    plPrev1.Rectangle (500, 1500, 800, 2000);
    plPrev1.FontHeight(100);
    plPrev1.TextOut   (500, 800, LText);
    plPrev1.PenWidth  (1);
    plPrev1.MoveTo    (500, 900);
    plPrev1.LineTo    (1500, 900);
  finally
    plPrev1.EndDoc;
  end;

  plPrev1.ShowModal;
end;

end.