Problème avec l'objet Printer
Bonjour,
J'ai créer un module de code pour l'appeler dans mon application:
Code:
1 2 3 4 5 6 7 8 9 10
|
Option Explicit
Public Sub PrintAnywhere(Src As Object, Dest As Object)
Dest.PaintPicture Src.Picture, Dest.Width / 2, Dest.Height / 2
If TypeOf Dest Is Printer Then
Printer.EndDoc
End If
End Sub |
Ensuite, j'appelle la méthode de manière classique pour imprimer la feuille:
Code:
Call PrintAnywhere(frmPrint, Printer) 'Print form.
et un message d'erreur 481 se produit : Image incorrecte; le code
Code:
Dest.PaintPicture Src.Picture, Dest.Width / 2, Dest.Height / 2
est surligné en jaune et l'imprimante me sort une feuille blanche.
Pourquoi?
Merci de bien vouloir venir à mon secour.
Problème avec l'objet Printer (suite).
Bonjour,
Merci de m'avoir indiqué d'attribuer une valeur à la propriété Picture, mais maintenant le souci, c'est que seule cette image est imprimée et pas le reste du Form. D'après mes infos on peut imprimer une feuille contenant une
image ou une feuille dans laquelle on a entré des données, sans passer par la méthode PrintForm.
Voici le code de l'application:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
Option Explicit
Public Sub PrintAnywhere(Src As Object, Dest As Object)
Dest.PaintPicture Src.Picture, 100, 100, Dest.Width, Dest.Height
If TypeOf Dest Is Printer Then
Printer.EndDoc
End If
End Sub
Private Sub cmdExit_Click()
End
End Sub
Private Sub cmdPrint_Click()
'Envoie une sortie vers la feuille
'à l'aide de la méthode Print.
Dim intCtr As Integer
Dim intCurX As Integer
Dim intCurY As Integer
'
'
'Définit les attributs de police.
frmPrint.FontItalic = True
frmPrint.FontBold = True
frmPrint.FontSize = 36
'
'Spécifie des mesures en twips.
frmPrint.ScaleMode = vbTwips
'
'Enregistre les positions X et Y (en Twips)
'à chaque itération de la boucle.
For intCtr = 1 To 10
intCurX = frmPrint.CurrentX
intCurY = frmPrint.CurrentY
'Texte noir et rouge en alternance.
If (intCtr Mod 2) = 1 Then 'Compteur de boucle.
frmPrint.ForeColor = vbRed
Else
frmPrint.ForeColor = vbBlack
End If
'Affiche le texte.
frmPrint.Print "Visual Basic"
'
'Change les positions X et Y.
frmPrint.CurrentX = intCurX + 350
frmPrint.CurrentY = intCurY + 300
Next intCtr
Call PrintAnywhere(frmPrint, Printer) 'Print form.
End Sub
Private Sub Form_Load()
End Sub |
D'avance merci.