Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Centrage à l'impression

4 réponses
Avatar
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

4 réponses

Avatar
Jean-marc
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/
Avatar
Jean-marc
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/
Avatar
Patrice Henrio
"Jean-marc" a écrit dans le message
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))
Avatar
Daniel AUBRY
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" a écrit dans le message
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/