Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2000年05月07日] [更新 2016年04月20日] プリンタ設定コンポーネント
   
プリンタ設定コンポーネント
テストプログラム Basic
動作確認等 Windows 7 U64(SP1) + Delphi XE(UP1) Pro







動作確認の基本テスト


コンポーネントで設定した内容通りに印刷するかをテストします.


図1
設計時画面
  • プロジェクトを起動
  • 各々のプリンタのプロパティを設定
  • [F9] で実行
図2
実行時画面
  • [印刷] をクリックすると設定したプロパティで印刷
図3
実行時のプロパティ変更
  • [プリンタ1設定] また [プリンタ2設定] でプロパティ変更可能

下図が実行結果の例です.
同じプリンタで,用紙サイズは A5 として,印刷の方向を横にしています.最初の図は,300 DPI の設定で印刷した結果です.次の図は,600 DPI で印刷した結果です.

文字の大きさは同じになっていますが,文字列の印刷開始位置が違っています.また,線の長さが違っていることが確認できます.
文字,つまりフォントの大きさは,ポイント数で指定すると,そのポイント数の大きさで印刷してくれます.一方,図形や画像は,印刷コードが全く同じでも,描画のコードがドット単位ですから,解像度 (インチあたりのドット数) で異なる結果となります.

この印刷結果は,プリンタの解像度によって印刷結果のサイズは違いますが,印刷コードの通りの結果となっていることになります.



図4
300 DPI での印刷結果
図5
600 DPI での印刷結果

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

interface

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

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    plSetPrinter1: TplSetPrinter;
    plSetPrinter2: TplSetPrinter;
    PrinterSetupDialog1: TPrinterSetupDialog;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

uses
  Printers;

{$R *.DFM}

//=============================================================================
//  plSetPrinter1のプリンタとプロパティの設定
//=============================================================================
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  plSetPrinter1.ShowSetupDialog;
end;
//=============================================================================
//  plSetPrinter2のプリンタとプロパティの設定
//=============================================================================
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  plSetPrinter2.ShowSetupDialog;
end;

//=============================================================================
//  プログラムの実行
//  Printer.Canvasに出力する
//  現実に接続してあるプリンタでテストのこと
//  CallSetttingsはプリンタ設定コンポを1つしか使用しない場合は必要ない
//=============================================================================
procedure TForm1.BitBtn3Click(Sender: TObject);
var
  LText1 : string;
  LText2 : string;
begin
  LText1 := 'plSetPrinter1の設定による印刷';
  LText2 := 'plSetPrinter2の設定による印刷';

  //plSetPrinter1の設定内容でプリンタの設定を行う
  plSetPrinter1.CallSetting;

  Printer.Title := '印刷のテスト';
  Printer.BeginDoc;
  try
    Printer.Title := '印刷のテスト';
    Printer.Canvas.Font.Name  := 'MS P明朝';
    Printer.Canvas.Font.Color := clRed;
    Printer.Canvas.Font.Size  := 20;
    Printer.Canvas.TextOut(200, 200, LText1);

    //線を引く
    Printer.Canvas.Pen.Width := 10;
    Printer.Canvas.MoveTo(200, 400);
    Printer.Canvas.LineTo(1800, 400);
  finally
    Printer.EndDoc;
  end;

  //plSetPrinter2の設定内容でプリンタの設定を行う
  plSetPrinter2.CallSetting;

  //文字列S2を印刷
  Printer.BeginDoc;
  try
    Printer.Canvas.Font.Name  := 'MS P明朝';
    Printer.Canvas.Font.Color := clBlack;
    Printer.Canvas.Font.Size  := 20;
    Printer.Canvas.TextOut(200, 200, LText2);

    //線を引く
    Printer.Canvas.Pen.Width := 10;
    Printer.Canvas.MoveTo(200, 400);
    Printer.Canvas.LineTo(1800, 400);
  finally
    Printer.EndDoc;
  end;
end;

end.