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]Sortie de texte avec Printer [Trucs & Astuces]


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Par défaut [VB6]Sortie de texte avec Printer
    Bonsoir à tous

    Je butte sur le problème suivant : j'essaie d'imprimer un texte blanc sur fond coloré avec l'objet Printer.
    Mais, malheur, impossible d'y arriver. Si je crée un rectangle coloré avec un Printer.Line et que j'écris dedans avec un Printer.Print le texte se trouve dans un rectangle blanc inclus dans le rectangle coloré.
    Je suis sur que quelqu'un a déjà fait ce genre de chose et est prêt à m'expliquer comment y arriver.

    Merci d'avance pour toute suggestion.

  2. #2
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Par défaut
    salut

    as tu pensé a mettre la proprieté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printer.fonttransparent = true
    ?

  3. #3
    Membre confirmé
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Par défaut
    Bonne idée, mais je l'ai déjà tenté.
    A mon grand étonnement ça n'a aucun effet.

  4. #4
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Par défaut
    salut,

    voici ce que j'utilise aussi chez moi et qui fonctionne.
    Je te donne la copie exacte de ce que j'ai trouvé sur intenet.
    A toi de l'adapter

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    'DECLARATION DE L'API
    '====================
    'Cette fonction définit le mode d'arrière-plan pour l'affichage de texte ou de lignes.
    'La valeur renvoyée, de type integer, est l'ancien mode utilisé ou zéro si l'opération échoue.
    'hdc correspond au handle du contexte de périphérique dans lequel le mode d'arrière-pla pour le
    '  tracé de texte ou de ligne est modifié.
    'nBkMode est l'identificateurs (OPAQUE ou TRANSPARENT) spécifiant le mode d'arrière-plan pour le
    '  tracé de texte ou de lignes.
     
    Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
     
    Private iBKMode As Integer
     
    Private Const TRANSPARENT = 1
    Private Const OPAQUE = 2
     
    Dim Texte As String
     
    '(...)
     
    Private Sub ImprimerAvecAPI(Destination As Object)
     
        Destination.Line (0, 0)-(Destination.ScaleWidth, 1200), vbYellow, BF
     
        Destination.CurrentY = 20
     
        Destination.FontTransparent = True
        Texte = "destination.FontTransparent  = " & Destination.FontTransparent
        Destination.CurrentX = (Destination.ScaleWidth - Destination.TextWidth(Texte)) / 2
     
        'Voici la ligne de code que Microsoft préconise pour régler le problème
        iBKMode = SetBkMode(Destination.hdc, TRANSPARENT)
     
        Destination.Print Texte
     
        Destination.Print ""
     
        Destination.CurrentX = 15
        Texte = "Par contre avec l'API SetBkMode, cela marche aussi bien à l'écran que sur l'imprimante.  Imprimez et vous verrez..."
        Destination.Print Texte
     
        Destination.Print ""
     
        Destination.FontTransparent = False
        Texte = "destination.FontTransparent  = " & Destination.FontTransparent
        Destination.CurrentX = (Destination.ScaleWidth - Destination.TextWidth(Texte)) / 2
     
        'J'obtiens le même résultat que j'active ou non la ligne de code suivante ;
        'mais il n'en est peut-être pas de même sur toute les imprimantes...
        'iBKMode = SetBkMode(destination.hdc, OPAQUE)
     
        Destination.Print Texte
     
        If TypeOf Destination Is Printer Then Destination.EndDoc: MsgBox "Impression lancée..."
     
    End Sub
    En esperant que cela fonctionnear aussi chez toi .

  5. #5
    Membre confirmé
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Par défaut
    Effectivement, ça fonctionne. Merci.

    Je suis quand même étonné de devoir passer par une API pour faire ce genre de truc somme toute très classique.
    Je ne mets pas résolu tout de suite, histoire de voir si quelqu'un a une autre idée que celle (excellente) de nala.

  6. #6
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Par défaut
    salut,

    content que cela fonctionne aussi chez toi.
    Il semble que ce soit un bug qui n'apparait que sur certaines imprimantes.

  7. #7
    Membre confirmé
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Par défaut
    C'est bien la peine d'avoir une laser dernier cri pour avoir ce type de bug

    Je vais faire un test avec une autre imprimante pour voir.

    Aller, on considère que c'est résolu.
    Merci encore nala.

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

Discussions similaires

  1. Texte avec javascript et sortie PDF
    Par jopont dans le forum BIRT
    Réponses: 5
    Dernier message: 12/11/2013, 13h59
  2. écrire sur un fichier texte avec vb6
    Par bucabuca dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 17/03/2008, 22h25
  3. [vb6]:Ajuster des données dans un fichier text avec un timer
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 25
    Dernier message: 28/07/2006, 12h13
  4. [VB6] probleme avec printer.paintpicture
    Par cisnake dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 24/05/2006, 14h01
  5. [VB6] Affichage d'image avec qlq contraintes
    Par youri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h44

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