Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年03月11日] [更新 2016年04月19日] 印刷プレビュー制御コンポーネント
印刷プレビュー制御コンポーネント
コンポーネントを実行時に生成して使用する場合
動作確認等 Windows 7 U64(SP1) + Delphi XE(UP1) Pro で作成







参考コード


例えば以下のように使用できます.


図1
実行結果

リスト1
印刷プレビュー制御コンポを実行時に生成して使用する例
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

uses plPrev, Printers;

{$R *.dfm}

//=============================================================================
//  印刷プレビュー制御コンポーネントを実行時に生成して利用する方法
//
//  usesにplSetPrinter,plPrevが必要
//  またpoLandscape等の定数名の使用にはusesにPrintersが必要
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
   LplPrev1 : TplPrev;
   LText    : string;
begin
  //印刷プレビュー制御コンポーネントを生成
  LplPrev1 := TplPrev.Create(Self);

  //FormPostionをDesignedまたはpoDesktopCenter等にしないと高さ幅はデフォルト
  LplPrev1.FormPosition := poMainFormCenter;
  LplPrev1.FormHeight   := 550;
  LplPrev1.FormWidth    := 700;

  try
    //ここでプリンタと印刷関係の設定
    LplPrev1.plSetPrinter.PaperNumber := DMPAPER_A5;
    LplPrev1.plSetPrinter.Orientation := poLandscape;

    //印刷する文字列
    LText:='印刷テスト';
    LplPrev1.Title:='モーダル表示';

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

end.