cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 27 oct. 2002 à 12:30
Il me semble qu'il faut que tu découpes le contenu de ton textbox au fur et à mesure que tu veux aller à la ligne.
J'ai trouvé un tutorial au sujet de l'impression sur le site : http://www.developpez.com/vbasic/.
Extrait :
'=============================
Impression de longues chaînes
En général, les chaînes sont coupées dans les contrôles par VbCrLf et l'impression se passe bien. Mais par
exemples, lors de l'impression d'une chaîne qui n'apparaît pas sur le formulaire, ou dans un TextBox multilignes,
ce caractère n'est pas présent dans la chaîne. L'imprimante risque alors de déborder du cadre ou de la feuille.
On utilise alors la fonction suivante pour découper la chaîne.
N.B : Cette fonction gère le cas de très longues chaînes, elle peut être optimisée si l'on est sûr de ne jamais
rencontrer de chaîne de plus de 3 ou 4 lignes.
Private Function DecoupeChaine(ByVal TextLong As String, ByVal TailleMax As Single) As String()
Dim TabSplit() As String, TabRetour() As String, compteur1 As Long, compteur2 As Long
Dim TabMot() As String, ChaineInter As String
TabSplit = Split(TextLong, vbCrLf)
ReDim TabRetour(0 To 0)
For compteur1 = 0 To UBound(TabSplit)
If Printer.TextWidth(TabSplit(compteur1)) > TailleMax Then
TabMot = Split(TabSplit(compteur1), " ")
For compteur2 = 0 To UBound(TabMot)
If Printer.TextWidth(ChaineInter & " " & TabMot(compteur2)) > TailleMax Then
TabRetour(UBound(TabRetour)) = ChaineInter
ChaineInter = TabMot(compteur2)
ReDim Preserve TabRetour(0 To UBound(TabRetour) + 1)
Else
ChaineInter = IIf(Len(ChaineInter) > 0, ChaineInter & " " & TabMot(compteur2),
TabMot(compteur2))
End If
Next compteur2
If Len(ChaineInter) > 0 Then
TabRetour(UBound(TabRetour)) = ChaineInter
ChaineInter = ""
ReDim Preserve TabRetour(0 To UBound(TabRetour) + 1)
End If
Else
TabRetour(UBound(TabRetour)) = TabSplit(compteur1)
ReDim Preserve TabRetour(0 To UBound(TabRetour) + 1)
End If
Next compteur1
ReDim Preserve TabRetour(0 To UBound(TabRetour) - 1)
DecoupeChaine = TabRetour
End Function
De manière générale il est bon de traiter ces chaînes de façon à ne pas laisser dedans de caractères "VbCrLf" ce
qui ramènerait currentX contre la marge de gauche, sauf si c'est évidemment le but rechercher.
'=============================