VCL アプリケーションでの印刷
Vcl.Printers.TPrinter オブジェクトは、Windows プリンタの詳細をカプセル化します。
インストールされ利用可能なプリンタのリストを取得するには、Printers プロパティを使用します。 クラス TPrinter のインスタンスは、TCanvas を使用します(フォームの TCanvas と同じ)。 これはつまり、フォーム上に描画されるあらゆるものは、同様に印刷できるということになります。 イメージを印刷するには、印刷したいキャンバス グラフィックと共に(TextOut メソッドを介したテキストも含む) BeginDoc メソッドを呼び出し、EndDoc メソッドを呼び出して、プリンタにジョブを送ります。
この例では、フォーム上のボタンとメモを使用します。 ユーザーがボタンをクリックすると、メモの内容が、ページの周囲に幅 200 ピクセルの枠線を付けて印刷されます。
この例を正常に実行するには、Printers を uses 句に追加する必要があります。
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();
}