VCL アプリケーションでの印刷

提供:RAD Studio
印刷から転送)

キャンバス オブジェクトのプロパティの使用 への移動


Vcl.Printers.TPrinter オブジェクトは、Windows プリンタの詳細をカプセル化します。

インストールされ利用可能なプリンタのリストを取得するには、Printers プロパティを使用します。 クラス TPrinter のインスタンスは、TCanvas を使用します(フォームの TCanvas と同じ)。 これはつまり、フォーム上に描画されるあらゆるものは、同様に印刷できるということになります。 イメージを印刷するには、印刷したいキャンバス グラフィックと共に(TextOut メソッドを介したテキストも含む) BeginDoc メソッドを呼び出し、EndDoc メソッドを呼び出して、プリンタにジョブを送ります。

この例では、フォーム上のボタンとメモを使用します。 ユーザーがボタンをクリックすると、メモの内容が、ページの周囲に幅 200 ピクセルの枠線を付けて印刷されます。

この例を正常に実行するには、Printersuses 句に追加する必要があります。

 procedure TForm1.Button1Click(Sender: TObject);
 var
 r: TRect;
 i: Integer;
 begin
   with Printer do
   begin
     r := Rect(200,200,(Pagewidth - 200),(PageHeight - 200));
     BeginDoc;
     Canvas.Brush.Style := bsClear;
     for i := 0 to Memo1.Lines.Count do
       Canvas.TextOut(200,200 + (i * Canvas.TextHeight(Memo1.Lines.Strings[i])), Memo1.Lines.Strings[i]);
     Canvas.Brush.Color := clBlack;
     Canvas.FrameRect(r);
     EndDoc;
   end;
 end;

次に例では、フォーム上のボタンとメモを使用します。 ユーザーがボタンをクリックすると、メモの内容が、ページの周囲に幅 200 ピクセルの枠線を付けて印刷されます。 この例を正常に実行するには、ユニット ファイルで <Printers.hpp> をインクルードします。

void __fastcall TForm1::Button1Click(TObject *Sender) {
	TPrinter *Prntr = Printer();
	TRect r = Rect(200, 200, Prntr->PageWidth - 200, Prntr->PageHeight - 200);
	Prntr->BeginDoc();
	for (int i = 0; i < Memo1->Lines->Count; i++)
		Prntr->Canvas->TextOut(200,
			200 + (i * Prntr->Canvas->TextHeight(Memo1->Lines->Strings[i])),
			Memo1->Lines->Strings[i]);
	Prntr->Canvas->Brush->Color = clBlack;
	Prntr->Canvas->FrameRect(r);
	Prntr->EndDoc();
}

関連項目