Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2001年12月10日] [更新 2016年04月19日] 印刷プレビュー制御コンポーネント
印刷プレビュー制御コンポーネント
テストプログラム PrinterInfo
動作確認等 Windows 7 U64(SP1) + Delphi XE(UP1) Pro







プリンタと用紙設定の保存と読出し ( 逐次表示方式 )


[プリンタ・用紙] ボタンで設定した内容をファイルに保存し,次回起動時にその内容を読出して有効にする際の参考プログラムです.
プリンタのプロパティの保存と読出には,plSetPrinter プロパティのメソッド (プリンタ設定コンポーネントのメソッドと同じ)を使用しています.


図1
設計時画面
図2
実行して用紙設定
  • [プリンタ・用紙] で [プリンタの設定]
  • 印刷の向きを横にする
図3
設定結果
  • 直ちにプレビューに反映
  • 次回起動時はこの設定でプレビューする
図4
プリンタの設定ファイル
  • 図2 のダイアログを [OK] で閉じた場合,ダイアログで設定した内容を保存した
    PrinterInfo1.plv というファイルができる.
    ただし,ユーザ設定用紙 (カスタム用紙) の情報は,OS やプリンタドライバよっては保存されない.

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

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.DFM}

//=============================================================================
//  逐次表示方式のコード
//
//  (1) まずプリンタの設定をファイルから読出す
//  (2) 描画用クラスメソッドを作成する(ここではHogeHogeという名前)
//  (3) このメソッド名をProcNameプロパティに指定する.
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
  //プリンタの設定値の保存パス名を定義
  PrnInfoFile := ExtractFilePath(Application.ExeName) + 'PrinterInfo1.plv';

  //ファイルがあればそのplSetPrinterの設定内容を読出す
  plPrev1.plSetPrinter.LoadFromFile(PrnInfoFile);

  //逐次表示方式では[プリンタ・用紙]のボタンが使用可能
  plPrev1.BtnOptions := plPrev1.BtnOptions + [boPrinterSetBtn];

  //逐次表示方式のProcNameプロパティ設定後のプリンタ設定は無効なので注意
  plPrev1.ProcName := HogeHoge;

  //プレビュー開始.逐次表示方式にはShowメソッドはない
  plPrev1.ShowModal;
end;

//-----------------------------------------------------------------------------
//  実際の描画メソッド
//  このメソッド内に本コンポーネントのCanvasを使用したコードを記述.   
//  複数頁の場合は,頁番号によって処理を分岐する.
//-----------------------------------------------------------------------------
procedure TForm1.HogeHoge;
begin
  plPrev1.FontHeight (120);
  plPrev1.TextOut(250, 300, '[プリンタの設定]の保存と読出しテスト');
end;

//=============================================================================
//  プリンタの設定ダイアログを[OK]で終了した時のイベント
//=============================================================================
procedure TForm1.plPrev1PrinterSetupDialog(Sender: TObject);
begin
  //plSetPrinter1の情報を保存
  plPrev1.plSetPrinter.SaveToFile(PrnInfoFile);
end;

end.