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++ Discussion :

Mettre une imprimante par défaut


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Mettre une imprimante par défaut
    Bonjour,

    J'ai développé une application qui remplit une facture au format Excel avec Borland C++ Builder. Pour remplir ma facture Excel, j'utilise le pilotage OLE.

    Ensuite je converti cette facture en PDF avec PDFCreator(imprimante virtuelle) pour cela j'utilise cette ligne de code :

    vWorksheet.OleProcedure("PrintOut");

    Mon problème est le suivant si l'imprimante virtuelle de PDFCreator n'est pas l'imprimante par défaut, dans ce cas là ma facture n'est pas converti.

    Est il possible de spécifier une imprimante avec le pilotage OLE ou sinon est il possible de modifier via mon programme l'imprimante par défaut ???

    Merci d'avance pour vos réponses.

    Amine.

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    un autre chemin de solution plus portable serait de choisir, non pas l 'imprimante par default, mais l'imprimante qui te conviens ( l'imprimante virtuelle) de manière dynamique.

    Cela t eviterais de changer l imprimante par default pour tout le reste du systeme.
    Pour les details, cherche tout seul !

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Oui c'est clair, j'aimerais bien éviter ça, d'ailleurs dans ma question je le demande comment choisir l'imprimante sur laquelle on va imprimer avec le pilotage OLE d'Execl ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Sous Word (à vérifier sous Excel mais je pense que c'est la même chose), il existe la propriété ActivePrinter que tu peux initialiser.

    Ex, sous C++ Builder:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    word.OlePropertySet("ActivePrinter",imprimante);
    Pour le choix du bac:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Variant opt = word.OlePropertyGet("Options");
    opt.OlePropertySet("DefaultTray",bac);  // si bac chaîne de caractères
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    opt.OlePropertySet("DefaultTrayID",bac);  // si bac numérique
    Pour les numéros ou noms de bac, il faut consulter l'aide.

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    j'arrive toujours pas à choisir mon imprimante, j'ai essayé ca (voir code) mais ca ne marche pas non plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Variant imprimante;
      AnsiString imprimante1;
      imprimante1 = "PDFCreator";
      imprimante = imprimante1.c_str();
      vWorksheet.OlePropertySet("ActivePrinter",imprimante);
      vWorksheet.OleProcedure("PrintOut");
    Sinon, j'ai pas bien capté l'histoire de bac ...

    Amine.

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Points : 92
    Points
    92
    Par défaut
    je me permet de remonter le post car j'ai le même problème :/

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TPrinter *Prntr = Printer();
    PrinterSetupDialog1->Execute()); //permet de choisir une imprimante
     
    Variant imprimante =  StringToOleStr(Printer()->Printers->Strings[Printer()->PrinterIndex]);
    vMSExcel.OlePropertySet("ActivePrinter",imprimante);
    et j'ai une erreur sur la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vMSExcel.OlePropertySet("ActivePrinter",imprimante);
    Est ce que quelqu'un serait donc comment définir l'imprimante active pour excel, dans le cas d'une utilisation en Ole.

    Merci d'avance

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Perso, j'ai toujours le même problème aussi, j'ai un peu laché l'affaire et j'affiche ma facture au format Excel et non plus en PDF.

    Si quelqu'un a une solution merci de nous la proposer, ce problème m'empeche de dormir lol.

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Points : 92
    Points
    92
    Par défaut
    je crois avoir trouvé la solution

    voici mon 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
    15
    16
    17
    PrinterSetupDialog1->Execute();
     
    TPrinter *Prntr = Printer();
     
    Variant imprimante =  StringToOleStr(Printer()->Printers->Strings[Printer()->PrinterIndex]);
     
          //On modifie l'imprimante active du fichier excel généré
          try
          {
            vWorksheet.OleProcedure("PrintOut",NULL, NULL, NULL, NULL, imprimante, NULL, NULL, NULL);
          }
          catch(...)
          {
          }
     
          //On imprime le fichier
          vWorksheet.OleProcedure("PrintOut");
    si tu pouvais tester amine et me dire si cela fonctionne correctement chez toi aussi

Discussions similaires

  1. Réponses: 10
    Dernier message: 04/11/2008, 14h30
  2. Mettre l'imprimante par défaut en paysage
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/10/2008, 13h28
  3. [MFC] Mettre une fonte par défaut.
    Par pier* dans le forum MFC
    Réponses: 1
    Dernier message: 09/11/2007, 17h29
  4. Réponses: 4
    Dernier message: 05/06/2007, 09h16
  5. mettre une valeur par défaut
    Par oolon dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 17h20

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