Centrage à l'impression

Le
Daniel AUBRY
Bonjour à tous,

je viens de constater une chose bizarre (pas
vraiment un problème mais.)

J'imprime une variable numérique integer dans un cadre
tracé à l'aide de Printer.Line
(XD = X de départ, HB = hauteur du cadre, LB = longueur du cadre)

Texte = NumeroEquipe(x)
MonImp.Font.Size = 10
MonImp.Font.Bold = True
MonImp.CurrentY = YD + ((HB - MonImp.TextHeight(Texte)) / 2)
MonImp.CurrentX = XD + ((LB - MonImp.TextWidth(Texte)) / 2)
MonImp.Print Texte

A l'impression la variable n'est pas centrée dans le cadre !!!!!

Par contre si je remplace Texte = NumeroEquipe(x)
par Texte = CStr(NumeroEquipe(x)) : ça marche
C'est le principal me direz vous mais j'aimerais bien
comprendre ce phénomène.

Merci et bonne journée (encore pluvieuse dans l'Est)

Dany
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-marc
Le #15398761
Daniel AUBRY wrote:
Bonjour à tous,

je viens de constater une chose bizarre (pas
vraiment un problème mais....)

J'imprime une variable numérique integer dans un cadre
tracé à l'aide de Printer.Line
(XD = X de départ, HB = hauteur du cadre, LB = longueur du cadre)

Texte = NumeroEquipe(x)
MonImp.Font.Size = 10
MonImp.Font.Bold = True
MonImp.CurrentY = YD + ((HB - MonImp.TextHeight(Texte)) / 2)
MonImp.CurrentX = XD + ((LB - MonImp.TextWidth(Texte)) / 2)
MonImp.Print Texte

A l'impression la variable n'est pas centrée dans le cadre !!!!!

Par contre si je remplace Texte = NumeroEquipe(x)
par Texte = CStr(NumeroEquipe(x)) : ça marche
C'est le principal me direz vous mais j'aimerais bien
comprendre ce phénomène.

Merci et bonne journée (encore pluvieuse dans l'Est)



Hello,

C'est curieux. Je ne parviens pas à reproduire ce comportement,
avec code de test qui me semble t-il reprend ta description:

Dim n As Integer
Dim s As String

n = 38

s = n
Debug.Print "->" & s & "<- " & Picture1.TextWidth(s)

s = CStr(n)
Debug.Print "->" & s & "<- " & Picture1.TextWidth(s)

J'obtiens en sortie:
->38<- 180
->38<- 180

Par curiosité, j'aimerais comprendre...
Quel est le type de de la variable "Texte" ?

Il serait sympa de mettre des traces dans ton code, qq chose comme ça:

Texte = NumeroEquipe(x)



debug.print "->" & Texte & "<-"

MonImp.Font.Size = 10
MonImp.Font.Bold = True
MonImp.CurrentY = YD + ((HB - MonImp.TextHeight(Texte)) / 2)
MonImp.CurrentX = XD + ((LB - MonImp.TextWidth(Texte)) / 2)



debug.print "Height :" & MonImp.TextHeight(Texte)
debug.print "Width :" & MonImp.TextWidth(Texte)

MonImp.Print Texte



Et de faire tourner avec et sans Cstr() pour voir la différence.


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Jean-marc
Le #15398701
Patrice Henrio wrote:

ne serait-ce pas du au fait que les nombres sont par défaut formatés
avec un espace devant en conversion implicite (Texte=N) et pas
d'espace avec conversion explicite (Texte=Cstr(N))



Ben c'est ce que je croyais mais ce n'est pas ce que montre mon code
d'exemple. Ceci dit, je suis sur que c'est un truc comme ça.
Mais à vérifier, par ce que je ne parviens pas à le prouver ou
à le mettre en évidence.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Patrice Henrio
Le #15398691
"Jean-marc" de news: 4680ba34$0$13852$
Daniel AUBRY wrote:
Bonjour à tous,

je viens de constater une chose bizarre (pas
vraiment un problème mais....)

J'imprime une variable numérique integer dans un cadre
tracé à l'aide de Printer.Line
(XD = X de départ, HB = hauteur du cadre, LB = longueur du cadre)

Texte = NumeroEquipe(x)
MonImp.Font.Size = 10
MonImp.Font.Bold = True
MonImp.CurrentY = YD + ((HB - MonImp.TextHeight(Texte)) / 2)
MonImp.CurrentX = XD + ((LB - MonImp.TextWidth(Texte)) / 2)
MonImp.Print Texte

A l'impression la variable n'est pas centrée dans le cadre !!!!!

Par contre si je remplace Texte = NumeroEquipe(x)
par Texte = CStr(NumeroEquipe(x)) : ça marche
C'est le principal me direz vous mais j'aimerais bien
comprendre ce phénomène.

Merci et bonne journée (encore pluvieuse dans l'Est)



Hello,

C'est curieux. Je ne parviens pas à reproduire ce comportement,
avec code de test qui me semble t-il reprend ta description:

Dim n As Integer
Dim s As String

n = 38

s = n
Debug.Print "->" & s & "<- " & Picture1.TextWidth(s)

s = CStr(n)
Debug.Print "->" & s & "<- " & Picture1.TextWidth(s)

J'obtiens en sortie:
->38<- 180
->38<- 180

Par curiosité, j'aimerais comprendre...
Quel est le type de de la variable "Texte" ?

Il serait sympa de mettre des traces dans ton code, qq chose comme ça:

Texte = NumeroEquipe(x)



debug.print "->" & Texte & "<-"

MonImp.Font.Size = 10
MonImp.Font.Bold = True
MonImp.CurrentY = YD + ((HB - MonImp.TextHeight(Texte)) / 2)
MonImp.CurrentX = XD + ((LB - MonImp.TextWidth(Texte)) / 2)



debug.print "Height :" & MonImp.TextHeight(Texte)
debug.print "Width :" & MonImp.TextWidth(Texte)

MonImp.Print Texte



Et de faire tourner avec et sans Cstr() pour voir la différence.


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/




ne serait-ce pas du au fait que les nombres sont par défaut formatés avec un
espace devant en conversion implicite (Texte=N) et pas d'espace avec
conversion explicite (Texte=Cstr(N))
Daniel AUBRY
Le #15398391
Bonjour à tous,

je réponds seulement car absent.

Je suis comme toi, jena Marc, j'ai pensé que les nombres
étaient formatés par VB et les tests que tu m'as conseillés
n'ont rien mis de tout cela en évidence.

Bonne journée à tous.

"Jean-marc" de news: 46814c7a$0$13865$
Patrice Henrio wrote:

ne serait-ce pas du au fait que les nombres sont par défaut formatés
avec un espace devant en conversion implicite (Texte=N) et pas
d'espace avec conversion explicite (Texte=Cstr(N))



Ben c'est ce que je croyais mais ce n'est pas ce que montre mon code
d'exemple. Ceci dit, je suis sur que c'est un truc comme ça.
Mais à vérifier, par ce que je ne parviens pas à le prouver ou
à le mettre en évidence.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/




Publicité
Poster une réponse
Anonyme