Comment ajouter un aperçu avant impression à mon application VB ?
Il n'existe pas de contrôle permettant de le faire automatiquement, il faut
le programmer manuellement. La méthode pour le programmer est plus simple
depuis la version 5 de Visual Basic car l'objet Printer n'y est plus un objet
système et il peut donc être passé en paramètre d'une fonction ou d'une
procédure. Les fiches suivantes de la base de connaissance MSDN permettent
de se documenter sur le sujet :
Pour les versions 5.0 et 6.0 de Visual Basic, le principe est le suivant :
- Placer un contrôle PictureBox sur une feuille
- Calculer le ratio entre ses dimensions et celles de l'objet Printer (cf.
la routine proposée par Microsoft)
- Redimensionner le PictureBox de façon qu'il soit une copie de la feuille
physique (donc de l'objet printer) : cela permet d'obtenir le bon ratio
longueur/largeur pour le PictureBox (qu'il ait le même que l'objet printer)
- Ecrire la routine d'impression de façon à ce que l'on puisse passer en
argument soit l'objet PictureBox, soit l'objet Printer
Par exemple pour Ecrire « Salut tout le monde », en Times New Roman, gras,
Police 14, et souligné, en position X=200, Y=500 de la feuille et en voir
l'aperçu, la routine serait la suivante :
Private sub Impression_ou_Aperçu (objDestination as Object,
Optional dRatio as double = 1)
'dRatio est le rapport précédemment cité entre la taille du PictureBox et
'celle de l'objet Printer
With objDestination
.FontName = "Times New
Roman"
.FontSize = 14 * dRatio
.FontUnderline = true
.CurrentX = 200 * dRatio
.CurrentY = 500 * dRatio
End With
ObjDestination.Print "Salut tout le monde"
End Sub
Il ne reste plus qu'à appeler la routine comme ceci (prenons par exemple un
PictureBox qui fasse le quart de taille de l'objet printer, le ratio est donc de
0,25)
'Pour l'aperçu :
Call Impression_ou_Aperçu (PictureBox, 0.25)
'Pour l'impression :
Call Impression_ou_Aperçu (Printer)
Pour l'impression des images, le principe est le même, il suffit d'appliquer
le fameux ratio dRatio aux dimensions et coordonnées de l'image à afficher sur
l'un ou l'autre des objets destination et d'utiliser la fonction
objDestination.PaintPicture. |