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

 Delphi Discussion :

Impression : imprimante par défaut sur différentes fiches


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2015
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 63
    Points : 39
    Points
    39
    Par défaut Impression : imprimante par défaut sur différentes fiches
    Bonjour,

    Dans notre application, l'utilisateur peut changer son imprimante par défaut par le biais du composant TprinterSetupDialog. Dans mon form principal, cela fonctionne bien puisqu'il envoi l'impression du premier document vers l'imprimante choisie.
    Pour le second document, l'impression se passe dans une autre unit, avec un form également, pour le traitement des données. Dans cette unit, il ne tient pas compte de la nouvelle imprimante définie mais il prend toujours l'imprimante par défaut du pc.

    Je n'ai rien vu au niveau de la seconde unit pour dire qu'il doit prendre les même informations que la unit principale.

    Auriez-vous des idées/solutions ?

    Merci d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Est-ce que tu peux mettre un peu de code ?

    Sur la seconde Form, l'impression part sur l'imprimante par défaut définie sous Windows ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2015
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 63
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Voici le code de la sélection de l'imprimante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TDelibesFm.ChoixImprimante1Click(Sender: TObject);
    begin
      //boîte de dialogue pour le choix de l'imprimante
      PrinterSetupDialog1.Execute;
    end;
    Ce code est sur le form DelibesFm.

    Le lancement de l'impression est sur ce form.
    Ensuite, la finalisation de l'impression est sur un autre form appelé GlobalPrint. C'est sur ce form que l'limprimante reste l'imprimante par défaut de Windows.

    J'ai mis ce code dans le second form pour voir l'imprimante par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      GetProfileString('Windows', 'device', '', ResStr, 255);
      ShowMessage(StrPas(ResStr));
    Merci d'avance pour l'aide

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2015
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 63
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Je suis toujours bloqué mais j'ai fait quelques tests supplémentaires :

    J'ai mis sur le form ne prenant pas l'imprimante nouvellement définie le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      GetProfileString('Windows', 'device', '', ResStr, 255);
      ShowMessage(StrPas(ResStr));
      dlgPntSet1.Execute;
      GetProfileString('Windows', 'device', '', ResStr, 255);
      ShowMessage(StrPas(ResStr));
    Cela me donne toujours la même imprimante malgré le changement. Par contre, je pense que l'imprimante retournée est l'imprimante par défaut de Windows. Avec le compsoant TprinterSetupdialog, cela ne la change que pour le programme.
    Comment connaître l'imprimante par défaut en cours dans le programme ?

    Voici également encore des informations supplémentaires sur le programme si cela peut aider

    Le print est lancé du form principal comme le choix de l'imprimante.
    Deux type d'impressions partent : 1 vers un document Html (avec le composant Htmlviewer) et l'autre vers un rapport Crystal Reports (avec le composant (TCrview).
    Les deux impressions sont gérés sur des forms différents du principal. Le form pour l'impression html n'a pas d'aspect visuel, pour l'impression Crystal Report, c'est un form visuel.

    Lors du lancement de l'impression, le changement de l'imprimante fonctionne bien sur l'html mais pas sur l'impression crystal reports.

    Merci d'avance pour votre aide.

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Je peux me tromper mais Htmlviewer est un composant Delphi et donc prend en compte l'imprimante par défaut définie par le code Delphi.
    Crystal Report est une librairie externe qui doit utiliser son propre gestionnaire d'impression.
    Il faudrait voir si cette librairie ne propose pas une fonction pour associer une imprimante précise plutôt que celle de Windows.

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Peut-être des idées ici, pour informer Windows du changement d'imprimante par défaut.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2015
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 63
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Merci pour les informations. Je vais regarder le lien.

    Htmlviewer n'est pas natif dans Delphi. Le composant est le suivant : https://github.com/BerndGabriel/HtmlViewer

    Pour crystalviewer : https://code.google.com/archive/p/de...report-viewer/

    Pour Crystal, il a effectivement la possibilité de changer l'imprimante via le composant => comment obtenir l'imprimante définie via TprinterSetupDialog pour la lui passer ?

    Bonne journée

  8. #8
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    quand je parle de composant delphi, je veux dire que c'est du code delphi et non une dll externe ou un ocx.
    En l'occurrence, il s'agit bien d'un composant delphi au sens large du terme, non installé par delphi mais écrit en .... plutôt en pascal d'ailleurs .

    Citation Envoyé par lave_01 Voir le message
    Bonjour,

    Merci pour les informations. Je vais regarder le lien.

    Htmlviewer n'est pas natif dans Delphi. Le composant est le suivant : https://github.com/BerndGabriel/HtmlViewer

    Pour crystalviewer : https://code.google.com/archive/p/de...report-viewer/

    Pour Crystal, il a effectivement la possibilité de changer l'imprimante via le composant => comment obtenir l'imprimante définie via TprinterSetupDialog pour la lui passer ?

    Bonne journée

  9. #9
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Pour Crystal, il a effectivement la possibilité de changer l'imprimante via le composant => comment obtenir l'imprimante définie via TprinterSetupDialog pour la lui passer ?
    TprinterSetupDialog.Execute change le PrinterIndex de l'objet Printer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      if PrinterSetupDialog1.Execute then
        ShowMessage( Printer.Printers[Printer.PrinterIndex] );
    Après, je ne sais pas ce qu'attend Crystal Report pour définir une imprimante. Son nom ?

    complément:

    pour avoir des détails plus complet sur l'imprimante définie avec TPrinterSetupDialog:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
      MyPrinter, MyDriver, MyPort: array[0..100] of Char;
      DevMode: THandle;
    begin
      Printer.GetPrinter(MyPrinter, MyDriver, MyPort, DevMode);
      Label1.Caption:=MyPrinter;
      Label2.Caption:=MyPort;

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je ne m'étais pas jusqu'à présent immiscé dans ce fil tant que je n'avais pas les composants entrant en jeu.
    en faisant quelques recherches (car ça fait un bail que je n'utilise plus Crystal Report) je suis "tomber" sur cette réponse
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2015
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 63
    Points : 39
    Points
    39
    Par défaut
    Merci pour les différentes informations.

    Effectivement, il semble que le composant Crystal Reports attente le nom de l'imprimante. Je vais essayer cela et je vous tiens au courant.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2015
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 63
    Points : 39
    Points
    39
    Par défaut
    Effectivement le composant Crystal Reports ne prend pas d'office l'imprimante définie par défaut via TprintSetupDialog.

    Ce composant a une propriété Printer qui permet de le redéfinir => merci à Papy214 pour le code qui m'a grandement aidé.

    Voici le code pour changer l'imprimante dans ce composant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    crystal_viewer.Printer:= Printer.Printers[Printer.PrinterIndex];
    Sachant que crystal_viewer est l'objet créé par le composant.

    @SergioMaster : merci pour le lien mais cela donnait des informations sur l'ancien composant Crystal Report qui n'est plus suivi. Ce composant est basé sur la nouvelle version fournie par SAP. Le programmeur en a fait une dll pour accéder aux fonctions en Delphi. en effet, SAP a fait son composant pour .Net et Java uniquement

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

Discussions similaires

  1. impression automatique sur imprimante par défaut
    Par tickerdu22 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/03/2012, 19h38
  2. [AC-2003] Impression des état sur l'imprimante par défaut
    Par FHDLB dans le forum IHM
    Réponses: 1
    Dernier message: 24/11/2011, 17h41
  3. Réponses: 3
    Dernier message: 09/01/2009, 14h04
  4. Réponses: 2
    Dernier message: 10/05/2006, 09h22
  5. Impression PDF et imprimante par défaut
    Par bobbafet dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/11/2004, 21h33

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