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] Utilisation de print


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut [vb6] Utilisation de print
    encore moi,

    j'utilise Printer.print dans mon appli.

    Maintenant, est-il possible, sur une même ligne, d'écrire un morceau de phrase aligné à gauche et l'autre à droite?

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Fais un tour du côté des propriétés CurrentX et CurrentY (ta solution est là)

  3. #3
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    Pour t'aider sur le fonctionnement de l'objet Printer, sache qu'il fonctionne un peu comme une imprimante laser.
    C'est-à-dire qu'il forme une "image" de ta page avant de l'imprimer donc, tu peux si tu le désires écrire à la dernière ligne d'abord puis à la première après dans ton code.
    Come le dit jmfmarques, le CurrentX et CurrentY sont l'abcisse et l'ordonnée de l'endroit où tu écris

  4. #4
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    ça craint un peu, jtrouve pas...

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Return or set the horizontal (CurrentX) or vertical (CurrentY) coordinates for the next printing or drawing method. Not available at design time.

    Syntax

    object.CurrentX [= x]
    object.CurrentY [= y]

    The CurrentX and CurrentY properties syntax have these parts:

    Part Description
    object An object expression that evaluates to an object in the Applies To list.
    x A number that specifies the horizontal coordinate.
    y A number that specifies the vertical coordinate.
    Remarks

    Coordinates are measured from the upper-left corner of an object. The CurrentX property setting is 0 at an object's left edge, and the CurrentY property setting is 0 at its top edge. Coordinates are expressed in twips, or the current unit of measurement defined by the ScaleHeight, ScaleWidth, ScaleLeft, ScaleTop, and ScaleMode properties.
    When you use the following graphics methods, the CurrentX and CurrentY settings are changed as indicated:
    Syntaxe :
    Printer.currentX = 1000 (exemple)

    Il n'y a absolument aucune différence entre l'opjet Printer (pour imprimer) et une PictureBox (pour afficher)

  6. #6
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    ça ok, mais j'ai une ligne où je veux afficher un bout de phrase à l'extrême gauche, et l'autre à l'extrème droite.

    Mais j'arrive pas à trouver la syntaxe exacte.

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Bé !
    Avec currentX, pardi !
    Il te faut par contre faire un petit calcul, en fonction des dimensions de ta feuille.

    Mais j'entrevois !...
    Alors un petit coup de pouce intéressant :
    Ouvre ton aide en ligne et regarde à TextWidth avec la plus grande attention (tu en auras besoin pour déterminer ton CurrentX pour ce qui doit être frappé à "l'extrême droite", comme tu dis...

  8. #8
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    eh ben voilà, tu m'as tout dit: TextWidth et un calcul, ce qui répond à ma question. Je regarde tout ça demain et je te dis ce que ça donne.

  9. #9
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Sauf coup de "pot total", tu reviendras avec une question (je le sais)...
    Ne t'inquiète pas... j'ai la réponse

  10. #10
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    j'ai donc utilisé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Printer.CurrentX = Printer.Width - Printer.TextWidth(MaChaine)

    Toutefois (ça te fera plaisir jmf), j'ai un soucis (est-ce celui auquel tu faisais allusion): la chaine n'apparait pas entière, une partie est mangée par la marge.

  11. #11
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Hé Hé !

    Alors 2 choses :
    considérons que l'on ait à imprimer toto = "voilà ce que je veux imprimer à droite"
    la 1ère :
    avant de calculer l'espace d'occuption de la chaine toto :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With font :
      .fontSize = ...
      .fontBold = ....
     etc (tout ce qui pourrait modifier la largeur d'occupation)
    End With
    et de suite après :
    largeurnécessaire = TextWidth(toto)

    Tu ne dois pas oublier de régler la propriété PageSize de ton objet printer
    Printer.PageSize = ...

    Si tu veux laisser une marge à droite, fastoche : il te suffit de calculer currentX en considérant que largeurnécessaire = largeurnécessaire + marge

  12. #12
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    toujours le même pb... J'en ai encore moins qui s'affiche

  13. #13
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je dois sortir (absent pour 2 heures)
    En attendant :
    Montre ici ton code d'impression en me précisant les dimensions de la feuille sur laquelle tu imprimes... et tes marges, ainsi que la police utilisée et sa taille et son style
    A +

  14. #14
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    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
     
     
           Printer.ScaleMode = vbTwips
            Printer.CurrentY = 0
            Printer.CurrentX = 0
            Printer.FontSize = "12"
            Printer.Font = "Arial"
            Printer.Print rsADO!BECTCODEPF        
     
            Printer.CurrentY = 0
     
             With Font:
                .FontSize = "12"
                .Font = "Arial"
            End With
            largeurnécessaire = TextWidth(rsADO!BECTCODEPF)
     
            Printer.CurrentX = Printer.Width - largeurnécessaire
            Printer.Print rsADO!BECTCODEPF
    voilà la partie concernée. Si t'as besoin d'autres info, dis le moi.

  15. #15
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    T'es réveillé ?

    Et les dimensions de ta feuille ?
    Et les marges ?

    On a besoin de ces renseignements essentiels (relis ce que j'ai écrit) : fais-les moi connaître !

  16. #16
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    oups 210x297 mm pour la page et toutes les marges = 6.35 mm

  17. #17
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    HGé ben !
    T'as pas de chance (forum inaccessible pendant pas mal de temps).
    Ce n'est donc pas ma faute...

    Alors voilà :
    celà se passe de commentaires (autoexplicite) :
    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
    Private margedroite As Single, margegauche As Single, adroite As Boolean
    Private Sub Command1_Click()
      margedroite = 20
      margegauche = 20
      adroite = True
      imprimons margedroite, margegauche, "baaaaaaaaaaaaaaaaab", adroite
      'dans l'expression ci-dessus : passe évidemment directement tes paramètres, :
      ' du genre imprimonsadroite 20, 20, "baaaaaaaaaaaaaaaaab", True (ou false)
      Printer.EndDoc
    End Sub
     
    Sub imprimons(mgd As Single, mgg As Single, montexte As String, ad As Boolean)
    'a toi de jouer pour passer plus de paramètres à cette routile :
    'font, etc... enfin tout ce que tu veux
      With Printer:
        .FontSize = 10
        .ScaleMode = 6 ' là j'ai choisi une échelle en millimètres pour "y voir plus clair"
        .PaperSize = 9 ' là : pour les dimensions de ma feuille papier
      End With
      With Font:
        .Size = Printer.FontSize 'je te laisse mettre ici les autres paramètres (style, etc...)
      End With
      If ad Then
          'comme j'ai modifié l'échelle, je rétablis en me servant de scaleWidth et non de Width
          Printer.CurrentX = Printer.ScaleWidth - Printer.TextWidth(montexte) - mgd
      Else
        Printer.CurrentX = mgg
      End If
      Printer.Print montexte
    End Sub

  18. #18
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    cool

    merci beaucoup jmf, je regarde tout ça plus en détail, mais ça me semble super.

  19. #19
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    ça y est , mon appli fonctionne super. Merci jmf, je serais pas un mec jte dirais que je t'aime. Franchement, merci.

    toutefois, juste pour ma culture perso, une toute dernière question:
    pour la propriété PaperSize, en imaginant que je souhaite imprimer sur un format personnalisé, par ex 89x25 mm, quelle sera la syntaxe à utiliser?

    j'ai vu dans la msdn ceci
    VbPRPSUser 256 Défini par l'utilisateur
    mais je vois pas comment je pourrais définir.

  20. #20
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Aaaaaaahhhhh... !
    Il est curieux, ce asdorve, hein ?...
    Alors : attends : je mouille mon doigt et le mets au vent ....

    Cà y est :

    Quelle chance !

    Après avoir défini que j'étais avec un format à personnaliser,... ma foi .... je le personalise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Printer.PaperSize = vbPRPSUser
      Printer.Height = 1000
      Printer.Width = 35000
    Essaye !
    Et n'oublie pas le tag "RESOLU"

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VB6] Utiliser dll .Net dans VB6
    Par sokette dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 31/03/2005, 14h34
  2. [CR][VB6] Utilisation des procédures stockées
    Par couledoux dans le forum SDK
    Réponses: 3
    Dernier message: 10/03/2005, 14h29
  3. [VB6] utilisation de Property LET / GET pour un tableau
    Par titounne dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 18/10/2004, 22h06
  4. [VB6] Utilisation de Implements
    Par Babyneedle dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/01/2003, 20h21
  5. [VB6] Utiliser un ou plusieurs datareports ?
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 21/11/2002, 10h44

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