Impression

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation des propriétés de l'objet canevas

L'objet Vcl.Printers.TPrinter encapsule les détails sur les imprimantes Windows.

Pour obtenir une liste des imprimantes installées et disponibles, utilisez la propriété Printers. Une instance de la classe TPrinter utilise un TCanvas (identique au TCanvas de la fiche). Cela signifie que tout ce qui peut être dessiné sur une fiche peut aussi bien être imprimé. Pour imprimer une image, appelez la méthode BeginDoc, suivie du graphique de canevas à imprimer (qui peut inclure du texte via la méthode TextOut) et envoyez le travail vers l'imprimante en appelant la méthode EndDoc.

Cet exemple utilise un bouton et un mémo sur une fiche. Quand l'utilisateur clique sur le bouton, le contenu du mémo s'imprime avec une bordure de 200 pixels autour de la page.

Pour exécuter cet exemple correctement, ajoutez Printers à votre clause 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;

L'exemple suivant utilise un bouton et un mémo sur une fiche. Quand l'utilisateur clique sur le bouton, le contenu du mémo s'imprime avec une bordure de 200 pixels autour de la page. Pour exécuter cet exemple avec succès, incluez <Printers.hpp> dans votre fichier unité.

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();
}

Voir aussi