Impression : imprimmer contenu d'un textbox mutiline a la bonne position sans eviter les retours...

1/5 (2 avis)

Snippet vu 6 143 fois - Téléchargée 40 fois

Contenu du snippet

Voila, vous est-il déja arrivé d'essayer d'imprimmer qq chose d'un textbox multiline, et vous specifiez "currentx = 400" par exemple, mais lors de l'impression, la premiere ligne est au bon endroit, mais les autres lignes sont imprimmé au mauvais endroit... voici la soluce : imprimmer ligne par ligne...

Ca peut aussi servir pour decoupeur une texte en ligne et stocker dans un array.

Source / Exemple :


'=============================================================

'  Utilisation :
'    ePrint text2.Text, 20, 40, vbRed, 5 ,vbMillimeters
' Imprimer le contenu du textbox "text2", à 20 millimetres a gauche, 40 hauter, en rouge avec 5 en ecart pour chaque ligne

Public Function ePrint(st As String, posX As Integer, posY As Integer, Couleur As OLE_COLOR, EcartLigne As Integer, ScaleMd As ScaleModeConstants)
Dim Str() As String, I As Integer 'Declaration de variables ( array )

    Printer.ForeColor = Couleur  'Ajuste la couleur
    Printer.ScaleMode = ScaleMd  'Ajuste la mesure ( en centimetres, twips

    Str = Split(txtDescription.Text, vbCrLf) ' Découpe le texte et place dans un array

    For I = 0 To UBound(Str)  ' petite boucle pour imprimmer chaque ligne
        amp Str(I), 17, 105 + I * EcartLigne 'Imprimme avec l'ecart de chaque ligne
    Next I  ' Repete jusqu'a ce qu'il ny'a plus rien a imprimmer

Printer.EndDoc  ' Etttttttt...... IMPRIMME !
End Function

Sub amp(Text As String, posX As Integer, posY As Integer) 'Petite fonction pour imprimmer.
Printer.CurrentX = posX  'Ajuste position X
 Printer.CurrentY = posY 'Ajuste position Y
  Printer.Print Text ' ajoute le texte dans le cache imprimmante
End Sub

'=============================================================

Conclusion :


Voila, n'hésitez pas a commenter... faire des remarques, dire les eventuels bugs,...
Ajouter un commentaire Commentaires
AtomWare Messages postés 71 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 11 novembre 2004
8 févr. 2003 à 12:16
oui, c'est vrai.
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 3
8 févr. 2003 à 08:42
Il me semble que ta fonction est incomplète...

En effet, tu pars du principe que ton texte contient des retours chariots (vbCrLf) et c'est sur eux que tu te bases pour le découper en lignes.

Mais que fais-tu si l'utilisateur a tapé un très très très long texte ? Imagine un paragraphe d'une dizaine de ligne dans lequel il n'y a aucun vbCrLf, inmanquablement tu te retrouveras dans la situation où la première ligne sera correctement aligné par rapport à la marge de gauche, mais pas les autres.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.