Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - Impression

Présentation

L'impression est aujourd'hui beaucoup utilisé que se soit pour imprimer une image ou du texte,...
La majorité des applications sous Windows prenne en charge plus ou moins l'impression.
En Delphi pour imprimer, il existe plusieurs méthodes selon le document à imprimer et la qualité que l'on souhaite.


Impression d'une fiche

Delphi propose la fonction "Print" qui permet d'imprimer une form.


procedure TForm1.Button1Click(sender : TObject);
begin
Form1.Print;
end;

Vous pouvez également vous servir de la propriété PrintScale. Cette propriété comporte troix options.

Options
Description
poNone La sortie imprimée dépendra de l'imprimante.
poProportional Impression de la fiche ayant la même taille que la fenêtre correspondante à l'écran.
poPrintToFit Redimmensionne la taile de l'image pour qu'elle corresoponde à la configuration actuelle de l'imprimante.

Cette impression comme vous le remarquerez, n'est pas une impression de qualité.



Impression d'un composant TRichEdit

Il existe aussi une fonction "Print" pour le composant TRichEdit.

procedure TForm1.Button1Click(sender : TObject);
begin
RicheEdit1.Print; //On imprime le contenu du RichEdit
end;


Imprimer un fichier texte avec ShellExecute

Il est possible d'utiliser la fonction API "ShellExecute" pour imprimer du texte.

uses ShellApi

procedure
TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle,'Print', 'delphi.txt',nil,nil,SW_Hide);
end
;


Les boites de dialogue d'impression

Delphi propose deux boites de dialogue.
- la boite de dialogue impression (avec le composant TPrintDialog).
- la boite de dialogue coniguration de l'impression
(TPrinterSetupDialog).

La boite de dialogue Impression

Le composant TPrintDialog est une boite de dialogue d'impression.
Vous utiliserez la boite de dialogue Impression juste avant que ne commence l'impression
.

Propriété

Description
 Collate Indique si les copies doivent être triées.
 Copies Indique le nombre d'exemplaires à imprimer.
 FromPage Indique la page de début.
 MaxPage Numéro maximal de page.
 MinPage Numéro minimal de page.
 Options Aspect de la boite.
 PrintRange Indique le choix de l'impression.
 PrintToFile Indique si l'impression.
 ToPage Indique la dernière page devant être imprimée.

procedure TForm1.Button1Click(Sender: TObject);
begin
PrintDialog1.Execute;
end
;

La boite de dialogue Configuration de l'impression

Le composant TPrinterSetupDialog est une boite de dialogue configuration de l'impression.
Ce composant permet de choisir avant l'impression la taille, l'orientation du papier...
Vous utiliserez
la boite de dialogue configuration de l'impression pour configurer l'imprimante.

procedure TForm1.Button1Click(Sender: TObject);
begin
PrinterSetupDialog1.Execute; //Lance la boite de dialogue
end
;


TPrinters

La classe TPrinters est utilisé pour imprimer du texte ou des images tel qu'un bitmap.

Méthodes de Printers

Méthode
Description
Abort Abandonne l'impression en cours.
BeginDoc Commence une impression.
EndDoc Termine une impression en faisant un saut de page.
GetPrinter Récupère les références de l'imprimante par défaut.
NewPage Provoque un saut de page.
SetPrinter Spécifie une nouvelle imprimante par défaut.

Propriétés de Printers

Propriété
Description
Aborted Indique si la dernière impression a été abandonnée.
Canvas Surface de dessin de la page.
Capabilities Contient les informations sur l'orientation, l'indication de sélection de tri et du nombre de copies.
Copies Indique le nombre de copies imprimées.
Fonts Fontes de l'imprimante par défaut.
Handle Contexte du dispositif de l'imprimante
Orientation Orientation de l'impression. (poLandScape pour paysage et oPortrait pou portrait).
PageHeight Hauteur de la page en pixels.
PageNumber Nombre de pages imprimées.
PageWidth Largeur de la page en pixel.
Printers Liste des imprimantes disponible.
PrintersIndex Indice de l'imprimante par défaut parmi toutes les autres imprimantes disponibles.
Printing Indique si l'impression est en cours.
Title Texte associé à l'impression qui est en cours.

Voici un exemple utilisant TPrinter permettant d'imprimer un rectangle :


Uses Printers;

procedure TForm1.Button1Click(Sender: TObject);
begin
Printer.BeginDoc;
Printer.Canvas.Rectangle(200,-200,5000,-3000); //Coordonnée du rectangle
Printer.EndDoc;
end;


Il est aussi possible d'imprimer du texte.

Uses Printers;

procedure TForm1.Button1Click(Sender: TObject);
begin
Printer.BeginDoc;
Printer.Canvas.TextOut(15,15,'delphi');
Printer.EndDoc;
end;


Ou un bitmap :


Uses Printers;

procedure TForm1.Button1Click(Sender: TObject);
Var btmp:TBitmap;
begin
btmp:=TBitmap.Create;
btmp.LoadFromFile('delphi.bmp');
Printer.BeginDoc;
Printer.Canvas.Draw(15,15,btmp);
Printer.EndDoc;
btmp.Free;
end;


Lors de l'impression le bitmap sera peut être petit, il faudra alors utiliser la méthode "StretchDraw" à la place de "Draw".



Réaliser un aperçu avant impression

L'aperçu avant impression dans une application est appréciable puisque cela permet de visualiser l'image sur la feuille de papier avant d'imprimer.
Cette exemple en Delphi permet de redimensionner la taille de l'image avant d'imprimer.

L'application que l'on va effectuer comporte deux forms appelées "Form1" et "Form2".
La Form1 permet juste d'uvrir (avec le composant TOpenDialog) un bitmap pour le mettre dans une image (avec le composant TImage).
A présent, voici à ce que ressemblera la Form2, c'est à dire l'aperçu de l'image.




Insérez un composant TMainMenu, TImage, TOpenDialog, TPrinterSetupDialog dans la Form1.
Mettez la propriété Autosize de TImage à True.
Avec le composant TOpenDialog, insérez le nom du filtre "Fichier BMP" et le filtre "*.bmp".
Créez un menu "Fichiers" avec le composant TMainMenu.
Ajoutez dans le menu "Fichier" un item "Ouvrir...", "Aperçu avant impression", "Configuration de l'impression " et "Quitter".
Cliquez sur chacun d'eux et ajoutez ses lignes.


procedure TForm1.Quitter1Click(Sender: TObject);
begin
Close; //Ferme l'application
end;

procedure TForm1.Ouvrir1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Image1.Picture.LoadFromFile(OpenDialog1.FileName); //Charge le bitmap dans l'image
end;

procedure
TForm1.Configurationdelimpression1Click(Sender: TObject);
begin
PrinterSetupDialog1.Execute;
end;

procedure TForm1.Aperuavantimpression1Click(Sender: TObject);
begin

Form2.ShowModal; //Affiche la form2
end;

Ajoutez une Form2 à votre application.
Passons maintenant à la Form2.
Insérez un TPanel. Mettez la propriété Align de ce composant à alTop. Introduisez deux TButton, deux TLabel un TScorllBox, TPintDialog et deux TTrackBar.
La propriété "Caption" de Button1 est Quitter et la propriété "Caption" de Button2 est Imprimer
.
La propriété "Align" de TScrollBox est à alClient. Et la propriété "Color" de TScrollBox est à clGray.
Pour simplifier tout cela, voila le source complet de la Form2.

uses Printers;

private
{ Déclarations privées }

zoomh , zooml : integer;
procedure Apercu;
public
{ Déclarations publiques }
end;

var
Form2: TForm2;

implementation

uses Unit1;

{$R *.DFM}

procedure TForm2.Apercu;
var Rect: TRect;
begin
Rect.Top := 10;
Rect.Left := 10;
begin
Rect.Right:=10+trunc(Form1.Image1.Picture.Graphic.Width*zooml) div 10;
Rect.Bottom := 10 +trunc(Form1.Image1.Picture.Graphic.Height *zoomh) div 10;
end;
Image1.Canvas.Pen.Mode:=pmWhite;
Image1.Canvas.Rectangle (0,0,Image1.Width,Image1.Height); Image1.Canvas.StretchDraw (Rect,Form1.Image1.Picture.Graphic);
end
;

procedure TForm2.Button1Click(Sender: TObject);
begin
Close; //Ferme la form2
end;

procedure TForm2.FormActivate(Sender: TObject);
var Tp,Lft:Word;
begin
//Dimensionne l'image pour être au milieu de l'écran.

Image1.Width := Printer.PageWidth div 10;
Image1.Height := Printer.PageHeight div 10; tp:=Round((Scrollbox1.Height-Image1.Height)/2);
Image1.Top:=tp;
Lft:=Round((Scrollbox1.Width-Image1.Width)/2);
Image1.Left:=Lft;
zooml:=4;
zoomh:=4;
Apercu; //Appelle la procedure Apercu
end;

procedure TForm2.Button2Click(Sender: TObject);
var Rect: TRect;
begin
if PrintDialog1.Execute then
begin

//Ferme la fiche avant l'impression
Close;
Rect.Top:=10;
Rect.Left:=10;
Rect.Right:=10+trunc(Form1.Image1.Picture.Graphic.Width*zooml);
Rect.Bottom:=10 +trunc(Form1.Image1.Picture.Graphic.Height*zoomh);
Printer.BeginDoc; //Commence l'impression
Printer.Canvas.StretchDraw (Rect,Form1.Image1.Picture.Graphic); Printer.EndDoc; //Fin de l'impression
end;
end;

procedure TForm2.TrackBar1Change(Sender: TObject);
begin
zoomh:=Form2.TrackBar1.Position; //Régle la hauteur de l'image
Apercu;
end;

procedure TForm2.TrackBar2Change(Sender: TObject);
begin
zooml:=Form2.TrackBar2.Position; //Régle la largeur de l'image
Apercu;
end;

end.

Aperçu avant impression    [ 02-10-2001 ]
 Réaliser un aperçu avant impression et une impression d'une image.
Télécharger :  [10 Ko] [Télécharger apercubmp.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/

Tous droits réservés - Contacts
Haut de la page