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 での印刷結果 |
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.
|