奈良県でソフトウェア開発・Webサービス構築しているフリーランスのエンジニアです

ロジカルアーツ研究所

C++Builder

印刷の基本

投稿日:2009年12月15日 更新日:

C++Builderで印刷を行うにはTPrinterクラスを利用します。このクラスには印刷に関する機能がカプセル化されていて、TPrinterオブジェクトのCanvasプロパティを取得して画面に描画するのとまったく同じ方法で印刷を行うことができます。ソースコードはこんな感じです。

if (PrintDialog1->Execute()) {
    TPrinter* printer = Printer();
    printer->BeginDoc();
    printer->Canvas->TextOut(0, 0, "Hello world!");
    printer->EndDoc();
}

基本的にはBeginDocメソッドとEndDocメソッドで挟まれた部分に印刷に関する処理を記述します。ここではTextOutメソッドを使用しましたが、TCanvasが持っているすべての描画機能を使用することができます。つまり描画対象が画面からプリンタに変わっただけで、まったく同じように処理できるわけですね。

ここでちょっと変わっているのはPrinter関数でしょう。TPrinterは通常のクラスとは違ってコンストラクタをもたず、インスタンスを生成するには専用のPrinter関数を使用します。

さらに不思議に思うのは、プリンタの機種や用紙サイズといった情報はいつ設定されるのか?ということでしょう。TPrintDialogあるいはTPrinterSetupDialogにはそれらしいプロパティが何もないのです。このことはヘルプを探しても見当たらないのですが、自分で試してみたところ、印刷ダイアログあるいはプリンタの設定ダイアログを閉じた時点で現在の設定値が更新され、Printer関数を実行すると現在の設定にしたがってTPrinterオブジェクトのプロパティが設定されるようです。実際プリンタの機種を変えてみるとTPrinterオブジェクトのPageIndexプロパティが変わりますし、用紙サイズを変えてみるとPageHeightあるいはPageWidthプロパティが変化することを確認できます。

要するにPrinter関数は現在の設定を反映したTPrinterオブジェクトを生成して返すということなのですね。

スポンサーリンク

関連記事

-C++Builder
-

Copyright© ロジカルアーツ研究所 , 2017 AllRights Reserved Powered by micata2.