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 :

[VB6] [Printer] Chiffres alignés à droite


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 71
    Points : 46
    Points
    46
    Par défaut [VB6] [Printer] Chiffres alignés à droite
    Bonjour a tous,

    Mon probleme est que j'ai ecrit un code pour imprimer mes etats, mais j'arrive pas a faire en sorte que les valeurs numerique soient cadrees a droite de leur zone d'impression.

    Que faire ???

  2. #2
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Points : 64
    Points
    64
    Par défaut
    Salut,

    Si tu imprimes avec Printer, pour aligner tes chiffres à droite, calcule la position de chaque nombre comme ceci :

    Printer.CurrentX = PositionX - Printer.TextWidth(CStr(Nombre))
    Printer.Print CStr(Nombre)

    PositionX correspond à la position que tu auras choisie pour aligner ta colonne de nombres.
    CStr convient pour des entiers mais pour des nombres décimaux, Format sera préférable.

    A+
    HCath

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 71
    Points : 46
    Points
    46
    Par défaut
    Salut,

    Tout d'abord merci pour la reponse.
    J'etais pas sur place ces jours derniers.
    J'ai essaye la proposition suivante qui m'a ete faite :

    Printer.CurrentX = PositionX - Printer.TextWidth(CStr(Nombre))
    Printer.Print CStr(Nombre)

    j'ai remplacé PositionX par 50 car c'est a partir du 50eme caractere de mon etat que j'aligne les colonnes de nombres.

    Le resultat c'est un decallage au debut de la ligne suivante des dits nombres. ???

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    cela ne marche pas en fonction du nombre de caractères.
    PositionX est en unités de l'imprimante que tu peux connaitre par
    printer.scalemode

  5. #5
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Points : 64
    Points
    64
    Par défaut
    Salut,

    L'objet Printer travaille par défaut en twips. Donc, il te faudra une PositionX bien supérieure à 50 pour aligner tes nombres, Essaie avec des valeurs de 3000, 6000 ou 9000 pour voir ce que ça donne.


    A+
    HCath

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 71
    Points : 46
    Points
    46
    Par défaut
    Salut,

    Je crois que je vais vous donner le code qui me pose probleme.


    Printer.Print Tab(2); Matricule; Tab(7); Prenom(s);
    Tab(19);Nom;Tab(35); Montant1; Tab(47); Montant2;
    Je veut que "Montant1" et "Montant2" soient alignes a droite pour les differentes lignes de l'etat comme l'exemple suivant :

    ....121234.......... 45756
    ......42000.........132758
    12457713............ 1245

    ce que ne permet pas le code ci-dessus.

  7. #7
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Points : 64
    Points
    64
    Par défaut
    Salut,

    Ta méthode ne peut fonctionner qu'avec des caractères fixes comme Courier.
    Avec les polices TrueType, ça ne marchera jamais.

    Donc, voici ce que tu dois faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Printer.ScaleMode = vbTwips
    Printer.CurrentY = 600
    Printer.CurrentX = 120
    Printer.Print Matricule; "  " ; Prenom(s); "  "; Nom;
    Printer.CurrentX = 6000 - Printer.TextWidth(CStr(Montant1)) 
    Printer.Print CStr(Montant1);
    Printer.CurrentX = 9000 - Printer.TextWidth(CStr(Montant2)) 
    Printer.Print CStr(Montant2)
    A+
    HCath

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 71
    Points : 46
    Points
    46
    Par défaut
    Salut,

    Je tiens a vous remercier tous et tres sincerement pour votre aide precieuse.

    A bientot !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Alignement de deux images à droite
    Par tus01 dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 14/01/2009, 09h41
  2. jComboBox alignement des items de droite à gauche
    Par RouRa22 dans le forum Composants
    Réponses: 3
    Dernier message: 12/09/2008, 12h55
  3. Aligner une image background à droite
    Par Xeron dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 02/06/2008, 01h31
  4. Alignement à gauche et a droite
    Par elekaj34 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 22/11/2007, 09h56
  5. Aligner un lien a droite d'un div sans redimmensionner celui ci
    Par Kernald dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 25/02/2007, 16h17

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