|
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.
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; |
|
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] [
apercubmp.zip]
Auteur : Yoann
Site internet : http://delphipage.free.fr/
|
|
|