


 
 
 
 
 
 
 |
Delphi2010 プリンタ設定の画面 2010/11/05 |
前回は[Dialogs]内の「PrintDialog」(「印刷」画面)について見ましたので今回も同じく[Dialogs]内の「PrinterSetupDialog」(「プリンタ設定」画面)をみてみます。「プリンタ設定」画面は Delphi6 にもあります。
「テスト21」を開いて、前回の「PrintDialog1」(「印刷」画面)を消し、[印刷]ボタンを[プリンタ設定]ボタンに変えます。そして配置してみます。1つ目ですので Nameプロパティは「PrinterSetupDialog1」となります。アイコン絵となりますが実行時には「プリンタ設定」画面が表示されます。
「プリンタ設定」画面は、印刷を行う前にプリンタの各種設定を行っておきましょう、というような画面です。この画面を表示して、[OK]をクリックしたら印刷開始を行う、というようなプログラミングは通常行いません。[OK]か[キャンセル]かは、指定したプリンタ設定内容を確定するかどうか、という意味合いのほうが大きいでしょう。「印刷」のボタンやメニュー等は別に存在するのが通例です。ボタン[プリンタ設定](Button5)をクリックした時の処理を記述します。
procedure TForm1.Button5Click(Sender: TObject);
begin
PrinterSetupDialog1.Execute;
end; |
とりあえず保存・コンパイル(再構築)・実行を行います。

[プリンタ設定]ボタンをクリック
↓

「プリンタ設定」画面が表示されます
「印刷」画面同様、「プリンタ設定」画面を表示(実行)するには Executeメソッドを利用します。[OK]ボタンをクリックすると「True」値が返ってきます。[キャンセル]ボタンをクリックするか右上の[×]をクリックすると「False」値が返ってきます。が、これを使う事は余り無いと思われます。
プリンター名は、このPCにセットアップされているプリンタ(プリンタドライバ)の名前が表示されますので、その中のどれかを指定します。[プロパティ]ボタンをクリックしてプリンタの詳細設定、用紙のサイズ・給紙方法、印刷の向きの指定を行います。プリンタへ実際に印刷を行う際には、この画面の各設定を読み取る、というような事はしません。実際、<オブジェクトインスペクタ>を見ても分かる通り、そういったプロパティも存在しません。
印刷プログラムを作成する場合には(※フォーム画面のPrintメソッドで安直に画面イメージを印刷するというような場合を除く)、uses節に「Printers」を指定し、Printerオブジェクトに対して各種取得・指定を行い、印刷開始させます。
pw := Printer.PageWidth ; // プリンタ横幅(ピクセル;ドット)
ph := Printer.PageHeight; // プリンタ高さ(ピクセル;ドット)
Printer.Title := 'TEST_PRINT'; // 印刷タイトル(余り長い文字はダメ)
・・・
Printer.BeginDoc; // 印刷開始
〜〜〜
Printer.NewPage; // 改頁
〜〜〜
Printer.EndDoc; // 印刷終了 |
この「〜〜〜」の部分で、Printer.Canvas に対して、文字を描かせたり、図形を描かせたりします。1ページのみの場合は、改頁のメソッドは不要です。プリンタ幅・高さは、プリンタの解像度(印刷品質)によって大きくなったり小さくなったりしますが、何千〜何万というような数値で、画面の大きさよりもかなり大きくなります。PDF作成ソフトを使う場合は、Titleプロパティの内容がPDFファイル名になる場合もありますので注意して下さい。海外製PDF作成ソフトの場合、日本語を使うとファイル名が文字化けをする場合が多いですので注意して下さい。また、プリントマネージャが受け取れる文字数は少ないので余り長い文字は使えません。文字を描かせる前には、文字のフォントを指定する事になると思われますが、フォントを指定したあとは、Printer.Refresh を行うようにします。これらは、「印刷」画面から印刷を行う場合も同様となります。
<オブジェクトインスペクタ>での内容は以下のようになっています。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/11/05
2010/11/05
▼2010/11/06
シェアウェア
Script!World
データベース
|