Marko007
Messages postés96Date d'inscriptionmardi 15 mai 2007StatutMembreDernière intervention29 janvier 2009
-
15 mai 2007 à 14:53
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 2009
-
16 mai 2007 à 11:22
Bonjour,
lorsque j'imprime une variable, la feuille imprimée ne contient que la 1er ligne. Or la variable StrPrintValue contient bien un dizaine de ligne.
Code :
-------
PrivateSub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Printer1.PrintPage
e.Graphics.DrawString(StrPrintValue, New Font("Arial", 10), Brushes.Black, 10, 10)
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 15 mai 2007 à 15:46
Ah mon avis le problème viens du fait que DrawString ne va pas à la ligne.
Tu dois alors séparer StrPrintValue en plusieurs sous-chaines correspondant aux lignes de ton document. Hint : utilise Graphics.MeasureString pour connaitre la taille graphique d'une chaine de caractères donnée.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 16 mai 2007 à 08:54
Bonjour,
Faut voir de quoi il s'agit là, exactement ...
Tu nous parles du contenu d'une textbox, maintenant.
Une textbox contient deux sortes de lignes : les vraies et les "fausses"
Les vraies sont séparées par un retour charriot
Les "fausses" ne correspondent qu'à une disposition d'affichage en fonction de la police de caractères et de la largeur de la textbox
La variable qui contiendrait le contenu de la textbox ne considèrerait, quant à elle, que les vrais sauts de ligne et ignorerait les "faux"...bien évidemment.
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 16 mai 2007 à 11:22
Salut,
J'allais te dire d'utiliser Control.DrawToBitmap, mais apparemment ca ne marche pas avec les textbox...
Donc il faut faire un peu plus rusé :
Il faut accèder à la méthode OnPrint du contrôle et donc on doit le subclasser, faisons une classe MyTextBox héritant de TextBox
Je te colle le code que ca donne ici :
Public
Class MyTextBox
Inherits TextBox
Shadows
Function DrawToBitmap()
As Bitmap
Dim r
As
New Bitmap(Width, Height)
Dim g
As Graphics = Graphics.FromImage(r)
Dim args
As
New PaintEventArgs(g,
New Rectangle(0, 0, Width, Height))
MyBase.OnPrint(args)
Return r
End
FunctionEnd
ClassTu remplace évidemment la TextBox contenant StrPrintValue par une MyTextBox (vérifie notamment bien que sa propriété visible est à True), appelons la MyTextBox1.
Et ensuite pour dessiner la textbox sur la feuille à imprimer, tu remplace
e.Graphics.DrawString( StrPrintValue , New Font("Arial", 10), Brushes.Black, 10, 10)
Par
MyTextBox1.Font = New Font("Arial", 10)
e.Graphics.DrawImage(MyTextBox1.DrawToBitmap, New Point(10,10))