Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2000年09月24日] [更新 2016年04月20日] プリンタ設定コンポーネント
プリンタ設定コンポーネント
テストプログラム PrinterSetupDlg
動作確認等 Windows 7 U64(SP1) + Delphi XE(UP1) Pro







実行時のプロパティ保存と読出し


設計時と同じプリンタが設置していない環境など,将来プリンタが変更となる可能性がある場合には,実行時にプロパティを設定して保存できると便利です.
このテストプログラムでは,[プリンタの設定ダイアログ] から設定した内容をそっくりそのままファイルに保存します.そして,この内容を読込んでプロパティを再設定します.


図1
設計画面
  • プロジェクト PrinterSetupDlg を起動
図2
設計時のプロパティ設定
  • 適当なプリンタを選択する
  • プリンタのプロパティダイアログを表示する
  • プロパティをいろいろ設定
  • [F9] でコンパイル実行する
図3
実行
  • [プリンタの設定] ダイアログ表示
  • 起動時の設定であることを確認
図4
実行時にプロパティを変更
  • プロパティを変更してみる.
    例えば,印刷の向きを [横] にして [OK] でダイアログを閉じる
  • プログラムを一度終了し再実行
  • [プリンタのプロパティ] をクリック
  • 前回設定のプロパティが再現されているのを確認
図5
プリンタ設定値のファイル
  • plSetPrinterDefault.plv は起動時のプロパティ
  • plSetPrinter1.plv はプロパティを保存したファイル

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

interface

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

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Label1: TLabel;
    plSetPrinter1: TplSetPrinter;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private 宣言 }
    FDefaultFileName : string;
    LRepFileName     : string;
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

//=============================================================================
//  フォーム作成時の処理
//
//  (1)起動時の設定を保存
//  (2)前回保存した設定を読出
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
  FDefaultFileName := plSetPrinter1.Name + 'Default.plv';
  LRepFileName     := plSetPrinter1.Name + '.plv';

  //起動時の値を保存
  plSetPrinter1.SaveToFile(FDefaultFileName);
  //ファイルが存在する場合には読出し
  plSetPrinter1.LoadFromFile(LRepFileName);
end;

//=============================================================================
//  BitBtn1クリックでプリンタ設定ダイアログを表示
//  設定した内容をファイルに保存する.
//=============================================================================
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  //[OK]ボタン押下で設定値を保存
  if plSetPrinter1.ShowSetupDialog then begin
    plSetPrinter1.SaveToFile(LRepFileName);
  end;
end;

//=============================================================================
//  起動時の設定に戻す
//=============================================================================
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  if plSetPrinter1.LoadFromFile(FDefaultFileName) then begin
    ShowMessage('起動時のプロパティに戻しました');
  end;
end;

//=============================================================================
//  保存した設定を再度読込む
//=============================================================================
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
  if plSetPrinter1.LoadFromFile(LRepFileName) then begin
    ShowMessage('保存した設定にしました');
  end;
end;

end.




動作原理


コンポーネントをファイルストリームや ini ファイル,または,レジストリに記録する際,実際に保存対象となるのは published で定義した読書き可能なプロパティだけです.
published なプロパティは,オブジェクト・インスペクタで設定可能なプロパティのことです.

したがって,単に [プリンタの設定] ダイアログをコンポーネントとして保存しても,用紙サイズ等の情報を保存することはできません.プリンタ設定コンポーネントでは,内部で,プリンタの設定情報を読書き可能なプロパティとしています.