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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 641 fois - Téléchargée 38 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,...

A voir également

Ajouter un commentaire

Commentaires

cs_PROGRAMMIX
Messages postés
1134
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
-
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.
AtomWare
Messages postés
71
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
11 novembre 2004
-
oui, c'est vrai.

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.