IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Impression d'un contrôle textbox


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut Impression d'un contrôle textbox
    Bonjour,

    Je me permets de vous soumettre un petit problème que j'ai à l'impression d'un textbox.

    Ce textbox peut recevoir un texte d'une longueur supérieure à la largeur de la page imprimée. Mon but est de pouvoir avoir un "retour à la ligne" automatique à la fin de la page pour pouvoir imprimer le texte en entier.

    Actuellement, si j'imprime tel que le textbox, même si la propiété multiline est à VRAI, il ne s'imprime que sur une seule ligne et la fin du texte est en dehors de la feuille.

    Merci pour votre aide à tous
    LaurentA

  2. #2
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Pas l'habitude d'imprimer mais à priori je dirais que tu as 2 solutions pour ton objet printer :

    Soit utiliser une police de taille uniforme (y'a un mot spécifique pour ça je crois mais ça ne me revient plus) et tu sais alors que tu peux mettre XX caractères par ligne, donc tu comptes tes caractères et tu insères ensuite un VbCRLF, soit tu ajoutes caractères par caractères et tu calcules la largeur physique de ta chaine que tu compares à la largeur de ta page. Si tu atteints la alrgeur, tu passes à la la ligne.

    Et si ça se trouve, y'a quelquechose d'archi simple à faire et qui ne me vient pas à l'esprit

  3. #3
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Une astuce, inspirée par OhMonBato
    Faire un split sur le caractrere espace, et n'imprmer chaque mot que s'il entre sur une ligne d'imrimante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Private Sub Command1_Click()
      Printer.ScaleMode = vbPixels 'par exemple
      Printer.FontName = "Times New Roman"
      ImprimeMultiLigne Text1.Text
      Printer.EndDoc
    End Sub
     
    Private Sub ImprimeMultiLigne(Txt As String)
      Dim Mots As Variant
      Dim iPnt As Integer
      Dim LargeurPage As Long 'largeur de la largeur utilisable sur l'imprimante
      Dim LargeurMot As Long 'largeur du mot controlé
      Dim LargeurLigne As Long 'largeur de la ligne avant chaque ajout de mot
      Dim Ligne As String 'ligne a imprimer
      Ligne = ""
      LargeurPage = Printer.ScaleWidth
      Mots = Split(Txt, " ")  'on decoupe en utilisant l'espase
      For iPnt = 0 To UBound(Mots)
        LargeurLigne = Printer.TextWidth(Ligne) 'largeur déjà utilisée
        LargeurMot = Printer.TextWidth(Mots(iPnt) ) 'largeur du mot que l'on veut ajouter
        If LargeurLigne + LargeurMot <= LargeurPage Then
          'ca entre dans la largeur
          Ligne = Ligne & Mots(iPnt) & " "
        Else
          'çà n'entre pas,
          'on imprime,on redemarre avec une autre ligne
          Printer.Print Ligne
          Ligne = Mots(iPnt) & " "
        End If
      Next
      'imprimer le reste
      Printer.Print Ligne
    End Sub

  4. #4
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    une autre idée, pas testée, mais qui me traverse l'esprit

    un textbox multiligne caché, de la même largeur que celle de ta zone d'impression, tu copies dedans le texte à imprimer et tu l'imprimes ligne par ligne avec http://vb.developpez.com/faq/?page=C...um_lig_textbox

    enfin c'est juste une idée ...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut Impression d'un contrôle textbox
    Merci à tous pour vos réponses ...

    Bonjour,

    La procédure que tu proposes ThierryAIM est celle sur laquelle je voulais au départ me baser (après avoir résolu mon problème de handle d'un textbox .. ) qui devrait permettre d'utiliser toutes les polices de caractères.

    Je voulais aussi savoir s'il n'y avait pas de méthodes plus simples.

    Je dois vous avouer, si toutefois il est encore nécessaire, que je débute en autodidacte sur visual basic, et que je bloque sur des points qui sont certainement pour vous évidents.
    Merci encore à tous.

    LaurentA78

Discussions similaires

  1. changer la Couleur de fond d'un contrôle Textbox
    Par laribi71 dans le forum IHM
    Réponses: 9
    Dernier message: 14/02/2007, 14h07
  2. changer la Couleur de fond d'un contrôle Textbox
    Par laribi71 dans le forum Access
    Réponses: 1
    Dernier message: 12/02/2007, 13h54
  3. Réponses: 5
    Dernier message: 22/11/2006, 23h24
  4. [VB.NET] Impression d'un contrôle Panel
    Par Kénium dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/07/2006, 19h37
  5. [VB.NET] Utiliser les collections de contrôles (Textbox)
    Par dinbougre dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/01/2005, 18h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo