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
実行結果
|
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.
|