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 :

imprimer fichier en mode paysage [Sources]


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 9
    Points
    9
    Par défaut imprimer fichier en mode paysage
    Bonjour,

    Je viens de parcourir les sujets concernant l'impression via c++ builder, mais je n'ai rien trouvé m'apportant une solution.

    J'ai trouve ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            if(PrintDialog1->Execute())
            {
            ShellExecute(NULL,"print","c:\fichier.doc","", "", SW_HIDE);
            }
    Mais les options venant du PrintDialog1 ne sont pas pris en compte :S il imprime toujours sur la sortie par defaut windows, et non l'imprimante selectionnée.

    Je voudrais également forcé l'impression en mode paysage.

    Si quelqu'un à une idée.
    Un grand merci

  2. #2
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Points : 94
    Points
    94
    Par défaut
    Salut,
    Regarde du côté de Printer().

    Un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TPrinter *Prntr = Printer();
     
        Prntr->Orientation=poLandscape;
    ---
    Après il faut que tu regardes les méthodes de Printer()...

    J'espère que ça t'aidera. J'ai rien d'autre en stock.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    merci, J'avais déjà recherché dans cette voie, mais je ne trouve rien de concret, un exemple pour me permettre de comprendre comment imprier ce fichier :S

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Mars 2003
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Que veux tu imprimer : un document de ton applic ou un document exterieur.

    Dans le premier cas utilse Printer(),
    Sinon lance une commande avec le shell du system.

    Voici un bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if(!PrintDialog1->Execute())
       return;
     
    // Paramètres de la page d'impression
       Printer()->Title = "Titre de ton impression";
       Printer()->Orientation = poLandscape ; // orientation
     
    // initialisation de la page d'impression
        Printer()->BeginDoc();
     
    // préparation de la page d'impression
        Printer()->Canvas->TextOut(20,20,"Ton texte");
    // envoi des commandes d'impression à l'imprimante
        Printer()->EndDoc();
    Courage

  5. #5
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Points : 94
    Points
    94
    Par défaut
    Je peux me tromper mais j'ai l'impression qu'il veut imprimer un fichier.
    Je ne sais pas comment ça se fait. C'est pour ça que je ne réponds pas.

    Par contre vous devriez mettre des balises code.

    Bon courage

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    oui c'est bien un fichier que je veux imprimer. Et comme je l'ai mis, le shellexecute ne prend pas en compte les parametres du PrintDialog1->Execute()

    merci

  7. #7
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Citation Envoyé par Le Veilleur
    oui c'est bien un fichier que je veux imprimer. Et comme je l'ai mis, le shellexecute ne prend pas en compte les parametres du PrintDialog1->Execute()
    C'est tout à fait normal. Le PrintDialog sert juste à présenter la fiche de configuration de l'imprimante, et à fournir les choix de l'utilisateurs grâce à ses propriétés. Si tu ne les utilises pas, les choix faits par l'utilisateur ne sont pas pris en compte...

    A titre personnel, je ne pense pas que la configuration de l'impression soit possible par un simple ShellExecute, qui ne fait rien d'autre qu'activer la fonction par défaut, à savoir l'impression avec les paramètres prédéfinis...

    Cordialement,

    Arnaud

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    C'est là que ce trouve toute la question, comment récuperer les choix de l'utlisateur via le printdialog, et surtout, comment imprimer ce fichier.

    J'ai fait plusieurs recherche sur le forum et google, et je n'ai pas trouvé grand chose de bien, idem sur hfr.

    Pourtant ca me semble etre quelque chose de classique :S

    merci

  9. #9
    Membre habitué
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut
    je pense que tu vas être obligé de faire un traitement spécifique pour chaque type d'impression que tu veux réaliser ... par exemple si tu veux imprimer un fichier Word je te conseille de te pencher sur OLE ... tu pourras ainsi piloter toi même Word ... je crois que tu pourras faire ce quetu veux avec un tprintdialog ...

  10. #10
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    non non, en fait, c'est un simple fichier texte que je veux imprimer, mais l'imprimer en mode paysage, ca serait déjà bien

  11. #11
    Membre habitué
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut
    je pense que ca doit marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Printer->Orientation = poLandScape;
     
    TRichEdit * RE = new TRichEdit (NULL);
    RE->Parent = this;
    RE->Visible=false;
    RE->Lines->LoadFromFile(ton nom de fichier texte);
    RE->Print("Impression");
    delete RE;
    je fait ca de tete ... a verifier ...

  12. #12
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Il me refuse la construction du trichedit.

    C'est pas tres propre comme méthode, y a pas mieux ?

  13. #13
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    J'ai crée un trichedit non dynamique, ca fonctionne bien, et je sais imprimer en mode paysage.

    maintenant mon problème, c'est que le richedit, ne gère pas les blancs comme un caractère. ce qui fait que mes lignes ne sont plus alignées du tout. ce qui est très génant,

    Si vous avez une idée, merci

    Pourtant le pitch est bien mis sur fixe :S

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RichEdit1->Clear();
    RichEdit1->Font->Pitch=fpFixed;
    RichEdit1->PlainText = false;
    RichEdit1->Lines->LoadFromFile(Edit8->Text.c_str());
    Ce que ca donne en image

    Le fichier d'origine avec la mise en page que je souhaite garder
    http://www.leveilleur.net/chris/pitch1.jpg

    Ce que le loadfile me donne dans un richedit
    http://www.leveilleur.net/chris/pitch2.jpg

  14. #14
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Ma solution, j'en ai bavé, mais ca marche

    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
     vector<AnsiString > vecTemp;
     vecTemp.clear();
     FILE *monFichier;
     monFichier = fopen(Edit8->Text.c_str(), "r");
     char szBuffer;
     AnsiString temp;
        if(monFichier != NULL)
          { //Le fichier n'est pas vide
            while (!feof(monFichier))
              {
                fread(&szBuffer, 1, 1,monFichier); //on range les caractere dans le buffer
                if(szBuffer != '\n')
                   temp+=szBuffer;
               else
                  {
                   if(temp !="")
                   vecTemp.push_back(temp);
                   temp="";
                  }
               }
            fclose(monFichier);
          }
     
    TPrinter * Prntr = Printer();
    Prntr->Orientation = poLandscape;
    Prntr->Canvas->Font->Name = "Courier";
    Prntr->Canvas->Font->Color = clBlack;
    Prntr->Canvas->Font->Size=10;
    Prntr->BeginDoc();
    int ta = 300;
    int nb = 0;
    for(unsigned i = 0 ; i < vecTemp.size() ; i++)
     {
      nb+=1;
      Prntr->Canvas->TextOut(400,ta,vecTemp[i]);
      ta+=150;
      if(nb == 60 )
         {Prntr->NewPage();
         ta=300;
         nb=0;
         }
     }
    Prntr->EndDoc();

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

Discussions similaires

  1. [AC-2003] imprimer fichier .txt en paysage
    Par Kafi dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/10/2010, 10h55
  2. imprimer JTable en mode paysage automatiquement
    Par cotede2 dans le forum Composants
    Réponses: 5
    Dernier message: 25/05/2009, 18h12
  3. [Javascript] imprimer en mode paysage?
    Par amarcil dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/04/2006, 19h10
  4. imprimer formulaire mode paysage
    Par LeScandinave dans le forum Contribuez
    Réponses: 11
    Dernier message: 16/03/2006, 10h21
  5. Imprimer une page en mode paysage
    Par twizell dans le forum ASP
    Réponses: 2
    Dernier message: 13/09/2005, 22h01

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