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

C++Builder Discussion :

Mise en forme d'impression avec TextOut


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut Mise en forme d'impression avec TextOut
    Bonjour,

    j'utilise la fonction TextOut() pour imprimer des étiquettes sur une imprimante créée avec CreateDC.
    L'impression fonctionne bien mais j'aimerais savoir quelles fonctions utilisées pour pouvoir mettre en forme le texte (police, taille et gras).

    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
     
    HDC hand;
    DOCINFO *di;
    di=(DOCINFO *) malloc(sizeof(DOCINFO));
    di->cbSize=sizeof(DOCINFO);
    di->lpszDocName = "Etiquette";
    di->lpszOutput=NULL;
    di->lpszDatatype=NULL;
    di->fwType=0;
    hand=CreateDC(NULL,PrnSel.c_str(),NULL,dmuser);
    StartDoc(hand,di);
    StartPage(hand);
    AnsiString Tmp="01956992-17";
    TextOut(hand,25,10,Tmp.c_str(),Tmp.Length());
    EndPage(hand);
    EndDoc(hand);
    free(di);
    Merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Pourquoi avec CreateDC ?
    Voir l'aide pour TPrinter (en particulier TPrinter::Canvas).

    A plus !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    Je veux imprimer sur une imprimante à étiquette DYMO.
    Si j'utilise la fonction Printer, je n'obtiens l'impression que sur une demi-étiquette (même si la taille papier est bien règlée dans les paramètres du driver). J'ai recherché de résoudre cela mais je n'y suis pas arrivé (ou alors, je me suis complètement trompé!)
    J'ai alors trouvé une solution dans l'aide de la fonction DocumentProperties et qui requiert d'utiliser CreateDC.

    To make changes to print settings that are local to an application, an application should follow these steps:

    1. Get the number of bytes required for the full DEVMODE structure by calling DocumentProperties and specifying zero in the fMode parameter.
    2. Allocate memory for the full DEVMODE structure.
    3. Get the current printer settings by calling DocumentProperties. Pass a pointer to the DEVMODE structure allocated in Step 2 as the pDevModeOutput parameter and specify the DM_OUT_BUFFER value.
    4. Modify the appropriate members of the returned DEVMODE structure and indicate which members were changed by setting the corresponding bits in the dmFields member of the DEVMODE.

    5. Call DocumentProperties and pass the modified DEVMODE structure back as both the pDevModeInput and pDevModeOutput parameters and specify both the DM_IN_BUFFER and DM_OUT_BUFFER values (which are combined using the OR operator).

    The DEVMODE structure returned by the third call to DocumentProperties can be used as an argument in a call to the CreateDC function.
    Si tu as une solution plus simple, je suis preneur...

    Merci d'avance

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut wap010
    Comme la dit henderson pour la dimension de la Fonte en utilisant le Canvas de Printer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Printer()->Canvas->Font->Size = 12;
    de meme pour " TextOutA "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Printer()->Canvas->TextOutA(0, 0, chaine);

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    Salut,

    oui je connais ces fonctions mais pour cela, il faut que je travaille avec un objet TPrinter (ce qui serait plus simple...mais comme dit précédemment, je n'ai qu'une demi-étiquette imprimée).
    Or, dans ce cas particulier, je dois travailler avec un handle sur l'imprimante obtenu via CreateDC()! L'impression fonctionne alors bien mais je ne sais pas comment faire pour mettre le texte en forme avec CETTE méthode.

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    peut etre que ceci va t'aider le lien
    extrait de code qui configure la Font pour un TEdit
    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
     
            case WM_CREATE:
                {
                 hEdit = CreateWindow("edit", "Texte", WS_CHILD | WS_VISIBLE |
                                       ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,
                                               0, 0, 0, 0, hwnd, NULL, hinst, NULL);
                 ZeroMemory(&lf, sizeof(LOGFONT));
                 lstrcpy(lf.lfFaceName,"Courier");
                 lf.lfHeight = 10;
                 hFont = CreateFontIndirect(&lf);
                 SendMessage(hEdit,WM_SETFONT,(UINT)hFont,TRUE);
                 SendMessage(hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN,
                                                                    MAKELONG(5, 5));
                 return 0;
                }

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

Discussions similaires

  1. mise en forme à l'impression
    Par DeFCrew dans le forum IHM
    Réponses: 8
    Dernier message: 16/10/2007, 15h56
  2. Réponses: 1
    Dernier message: 05/06/2007, 10h34
  3. Mise en forme tableau word avec VB6
    Par alexxx69 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 03/04/2007, 12h50
  4. [CR9] Mise en forme de champ avec des formats
    Par Sytchev3 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 01/03/2007, 16h35
  5. [ImageMagick] Mise en forme du texte avec imagettftxt
    Par jersey_girl dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/01/2007, 04h56

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