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

surligner une phrase/mots

6 réponses
Avatar
David
Bonjour à tous,

Au départ de printer.print et avec une imprimante couleur
est-il possible de surligner (pas souligner) la phrase
entière voire un ou 2 mots ?

texte=Ex turba vero imae sortis
Printer.Print texte

Merci d'avance.
--
a+ Jean-Pol
Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/
Cette page est transmise avec des électrons 100% recyclés.

6 réponses

Avatar
Driss HANIB
Bonjour

regarde l'objet printer et tu verras notament comment formater le texte

ici utiliser Printer.Font.Underline = True
avant le texte à souligner
puis tu utilise printer.print
puis tu dois mettre
Printer.Font.Underline = False
pour enlever le soulignement pour les textes suivants

Driss

"David" a écrit dans le message de news:

Bonjour à tous,

Au départ de printer.print et avec une imprimante couleur
est-il possible de surligner (pas souligner) la phrase
entière voire un ou 2 mots ?

texte=Ex turba vero imae sortis
Printer.Print texte

Merci d'avance.
--
a+ Jean-Pol
Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/
Cette page est transmise avec des électrons 100% recyclés.




Avatar
Vincent Guichard
Driss HANIB a écrit :
Bonjour


Bonjour

ici utiliser Printer.Font.Underline = True
avant le texte à souligner


Non, justement, il veut surligner le texte, pas le souligner!

"David" a écrit dans le message de news:
>> est-il possible de surligner (pas souligner) la phrase
>> entière voire un ou 2 mots ?

Il n'y a pas de moyen direct de faire ça à ma connaissance, mais il e st
très simple de faire une fonction pour simuler le comportement que tu
désire: il suffit de dessiner un rectangle plein avant d'écrire dessu s
le texte à surligner. Par exemple:

Sub TexteSurligne(texte As String, couleur As ColorConstants)
Dim h As Single, w As Single, x As Single, y As Single, t As Boolean
t = Printer.FontTransparent
h = Printer.TextHeight(texte)
w = Printer.TextWidth(texte)
x = Printer.CurrentX
y = Printer.CurrentY
Printer.Line Step(0, 0)-Step(w, h), couleur, BF
Printer.CurrentX = x
Printer.CurrentY = y
Printer.FontTransparent = True
Printer.Print texte;
Printer.FontTransparent = t
End Sub


Vincent Guichard
Avatar
David
Bonjour,

Merci pour votre programmation.
Je vais intégrer Printer.FontTransparent, dont
je ne connaissais ni l'existence ni l'utilisation,
dans ma programmation.

--
a+ Jean-Pol
Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/
Cette page est transmise avec des électrons 100% recyclés.

"Vincent Guichard" a écrit dans le message de
news: 4b013224$0$927$
Driss HANIB a écrit :
Bonjour


Bonjour

ici utiliser Printer.Font.Underline = True
avant le texte à souligner


Non, justement, il veut surligner le texte, pas le souligner!

"David" a écrit dans le message de news:
>> est-il possible de surligner (pas souligner) la phrase
>> entière voire un ou 2 mots ?

Il n'y a pas de moyen direct de faire ça à ma connaissance, mais il est
très simple de faire une fonction pour simuler le comportement que tu
désire: il suffit de dessiner un rectangle plein avant d'écrire dessus
le texte à surligner. Par exemple:

Sub TexteSurligne(texte As String, couleur As ColorConstants)
Dim h As Single, w As Single, x As Single, y As Single, t As Boolean
t = Printer.FontTransparent
h = Printer.TextHeight(texte)
w = Printer.TextWidth(texte)
x = Printer.CurrentX
y = Printer.CurrentY
Printer.Line Step(0, 0)-Step(w, h), couleur, BF
Printer.CurrentX = x
Printer.CurrentY = y
Printer.FontTransparent = True
Printer.Print texte;
Printer.FontTransparent = t
End Sub


Vincent Guichard
Avatar
Driss HANIB
Ah OK

autant pour moi.
Voilà de se précipiter
Je dois avoir cela sous la main je regarde..

Driss
"Vincent Guichard" a écrit dans le message de
news: 4b013224$0$927$
Driss HANIB a écrit :
Bonjour


Bonjour

ici utiliser Printer.Font.Underline = True
avant le texte à souligner


Non, justement, il veut surligner le texte, pas le souligner!

"David" a écrit dans le message de news:
>> est-il possible de surligner (pas souligner) la phrase
>> entière voire un ou 2 mots ?

Il n'y a pas de moyen direct de faire ça à ma connaissance, mais il est
très simple de faire une fonction pour simuler le comportement que tu
désire: il suffit de dessiner un rectangle plein avant d'écrire dessus
le texte à surligner. Par exemple:

Sub TexteSurligne(texte As String, couleur As ColorConstants)
Dim h As Single, w As Single, x As Single, y As Single, t As Boolean
t = Printer.FontTransparent
h = Printer.TextHeight(texte)
w = Printer.TextWidth(texte)
x = Printer.CurrentX
y = Printer.CurrentY
Printer.Line Step(0, 0)-Step(w, h), couleur, BF
Printer.CurrentX = x
Printer.CurrentY = y
Printer.FontTransparent = True
Printer.Print texte;
Printer.FontTransparent = t
End Sub


Vincent Guichard
Avatar
Driss HANIB
Salut Vincent et Jean-Pol

Effectivement je n'ai pas mieux mais par contre j'ai vu sur le net qu'il y a
un bug dans la fonction FontTransparent de l'objet printer.

il faut utiliser une api : voilà comment j'ai repris un code, pour un usage
perso..
ici dans une proriété de classe qui gère justement une écriture sur un fond
de couleur : ce qui revient au même que vincent

Private Const FondTransparent = 1
Private Const FondOPAQUE = 2

Public Property Let FontTransparent(ByVal vNewValue As Boolean)
Dim iBKMode As Long

If PrintFlag Then
Printer.FontTransparent = vNewValue
If vNewValue Then
iBKMode = SetBkMode(Printer.hDC, FondTransparent) ' on utilise
cette façon
' car il y a apparemmnt un bug dans la fonction FontTransparent
de Printer
Else
iBKMode = SetBkMode(Printer.hDC, FondOPAQUE)
'Printer.FontTransparent = True

End If
Else
ObjPrint.FontTransparent = vNewValue
Debug.Print "Fond transparent = " & ObjPrint.FontTransparent
End If
End Property


Driss


"Vincent Guichard" a écrit dans le message de
news: 4b013224$0$927$
Driss HANIB a écrit :
Bonjour


Bonjour

ici utiliser Printer.Font.Underline = True
avant le texte à souligner


Non, justement, il veut surligner le texte, pas le souligner!

"David" a écrit dans le message de news:
>> est-il possible de surligner (pas souligner) la phrase
>> entière voire un ou 2 mots ?

Il n'y a pas de moyen direct de faire ça à ma connaissance, mais il est
très simple de faire une fonction pour simuler le comportement que tu
désire: il suffit de dessiner un rectangle plein avant d'écrire dessus
le texte à surligner. Par exemple:

Sub TexteSurligne(texte As String, couleur As ColorConstants)
Dim h As Single, w As Single, x As Single, y As Single, t As Boolean
t = Printer.FontTransparent
h = Printer.TextHeight(texte)
w = Printer.TextWidth(texte)
x = Printer.CurrentX
y = Printer.CurrentY
Printer.Line Step(0, 0)-Step(w, h), couleur, BF
Printer.CurrentX = x
Printer.CurrentY = y
Printer.FontTransparent = True
Printer.Print texte;
Printer.FontTransparent = t
End Sub


Vincent Guichard
Avatar
David
Bonjour à tous,

Un grand merci pour vos 2 réponses qui m'ont permis
de finaliser avec succès le programme pour surligner un ou
plusieurs mots dans la partie "réclame", avec un caractère
d'échappement de mon programme de facturation.

--
a+ Jean-Pol
Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/
Cette page est transmise avec des électrons 100% recyclés.


"Driss HANIB" a écrit dans le message de news:

Salut Vincent et Jean-Pol

Effectivement je n'ai pas mieux mais par contre j'ai vu sur le net qu'il y
a un bug dans la fonction FontTransparent de l'objet printer.

il faut utiliser une api : voilà comment j'ai repris un code, pour un
usage perso..
ici dans une proriété de classe qui gère justement une écriture sur un
fond de couleur : ce qui revient au même que vincent

Private Const FondTransparent = 1
Private Const FondOPAQUE = 2

Public Property Let FontTransparent(ByVal vNewValue As Boolean)
Dim iBKMode As Long

If PrintFlag Then
Printer.FontTransparent = vNewValue
If vNewValue Then
iBKMode = SetBkMode(Printer.hDC, FondTransparent) ' on utilise
cette façon
' car il y a apparemmnt un bug dans la fonction FontTransparent
de Printer
Else
iBKMode = SetBkMode(Printer.hDC, FondOPAQUE)
'Printer.FontTransparent = True

End If
Else
ObjPrint.FontTransparent = vNewValue
Debug.Print "Fond transparent = " & ObjPrint.FontTransparent
End If
End Property


Driss


"Vincent Guichard" a écrit dans le message de
news: 4b013224$0$927$
Driss HANIB a écrit :
Bonjour


Bonjour

ici utiliser Printer.Font.Underline = True
avant le texte à souligner


Non, justement, il veut surligner le texte, pas le souligner!

"David" a écrit dans le message de news:
>> est-il possible de surligner (pas souligner) la phrase
>> entière voire un ou 2 mots ?

Il n'y a pas de moyen direct de faire ça à ma connaissance, mais il est
très simple de faire une fonction pour simuler le comportement que tu
désire: il suffit de dessiner un rectangle plein avant d'écrire dessus
le texte à surligner. Par exemple:

Sub TexteSurligne(texte As String, couleur As ColorConstants)
Dim h As Single, w As Single, x As Single, y As Single, t As Boolean
t = Printer.FontTransparent
h = Printer.TextHeight(texte)
w = Printer.TextWidth(texte)
x = Printer.CurrentX
y = Printer.CurrentY
Printer.Line Step(0, 0)-Step(w, h), couleur, BF
Printer.CurrentX = x
Printer.CurrentY = y
Printer.FontTransparent = True
Printer.Print texte;
Printer.FontTransparent = t
End Sub


Vincent Guichard