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.
|