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

Composants VCL Delphi Discussion :

Format papier d'imprimante


Sujet :

Composants VCL Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Format papier d'imprimante
    Bonjour

    Je chercher la moyen de paramettrer le format du papier pour l'imprimante sans passer par PRINTERSETUPDIALOG.

    Merci
    Jean

  2. #2
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour et bienvenue,

    Avais-tu cherché auparavant dans les tutos et autre de ce forum ?

    Que penses-tu de l''API GetDeviceCaps, consulte tranquillement un des tutos à Jean-Luc :

    http://alphomega.developpez.com/imprimer/?page=page_2

    Bonne progr !

  3. #3
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Et puis tu devrais trouver ton bonheur avec une Recherche avancée sur le forum en cherchant avec le mot "imprimante"

    Sinon, dans ces thread, j'explique comment forcer les paramètres d'impression d'une imprimante, en l'occurence pour le mode Duplex (commande du recto-verso), mais la méthode est similaire et les fonctions de l'API Windows utilisées identiques pour le choix du format papier :
    ici --> http://www.developpez.net/forums/vie...ght=imprimante
    et là -->
    http://www.developpez.net/forums/vie...ght=imprimante

    J'essaie de te poster un exemple si j'ai le temps, en attendant tu peux compulser l'aide Windows qui vient avec ton Delphi (menu "Aide--> SDK Windows"), et cherche "DEVMODE".

    Ta solution réside dans le paramétrage ad'hoc de cette structure DEVMODE...


    Et les threads vers lesquels je t'ai renvoyé.

    En attendant, bon courage
    Bidouilleuse Delphi

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour et merci pour vos reponses.

    Je vais continuer a faire mes recherches.
    Justement dans le reponse de Waskol, tu indique la structure de DEVMODE, et moi je cherche un livre ou un site pour avoir les structures de TDEVICEMODE, de TSYSTEMETIME par exemple et tous les autres.

    C'est tres sympa d'avoir des amis qui vous aident

    Jean du Quebec.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Format du papier
    Bonjour

    J'ai essaye cette sequence d'instructions trouve dans le forum
    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
     
      Printer.GetPrinter(Device,Driver,Port,hDMode);
     
      If HDmode <>0 Then
      Begin
        pDMode := GlobalLock(hDMode);
     
        if pDMode <> nil then
        begin
          pDMode^.dmFields:= pDMode^.dmFields - dm_Papersize;
          pDMode^.dmPaperlength:=200;
          pDMode^.dmPaperwidth:=250;
          pDMode^.dmFields:= pDMode^.dmFields + dm_Paperlength + dm_Paperwidth;
          GlobalUnlock(hDMode);
        end;
      End;
    Et d'apres ZAX-TFH cela fonctionne, mais moi je suis t5oujours au meme format que celui indique dans Proprietes de Windows.

    Ou est mon erreur.

    Merci
    Jean
    [Balises CODE rajoutées par Pedro. merci d'y penser à l'avenir]

  6. #6
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Encore de la lecture :
    http://www.developpez.net/forums/vie...asc&highlight=

    Courage et bonne progr

    @+

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Format papier d'imprimante
    Bonjour
    Merci pour l'adresse du courrier.
    J'ai lu les pages echange entre J-P et Chris, mais apres tous les essais de J-Pd donne par Chris, le probleme est le meme pour J-P cela ne fonctionne pas.

    Je vais laisser un message a J- P, pour savoir si le probleme est regle.

    Merci de tout les conseils et de ta patience,
    jean
    [/i]

  8. #8
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut Re: Format du papier
    Citation Envoyé par bresse
    Bonjour

    J'ai essaye cette sequence d'instructions trouve dans le forum
    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
     
      Printer.GetPrinter(Device,Driver,Port,hDMode);
     
      If HDmode <>0 Then
      Begin
        pDMode := GlobalLock(hDMode);
     
        if pDMode <> nil then
        begin
          pDMode^.dmFields:= pDMode^.dmFields - dm_Papersize;
          pDMode^.dmPaperlength:=200;
          pDMode^.dmPaperwidth:=250;
          pDMode^.dmFields:= pDMode^.dmFields + dm_Paperlength + dm_Paperwidth;
          GlobalUnlock(hDMode);
        end;
      End;
    Et d'apres ZAX-TFH cela fonctionne, mais moi je suis t5oujours au meme format que celui indique dans Proprietes de Windows.

    Ou est mon erreur.

    Merci
    Jean
    [Balises CODE rajoutées par Pedro. merci d'y penser à l'avenir]
    J'utiliserais un "and (not dm_Papersize)" qui marchera beaucoup mieux que le signe moins (les opérations bit à bit engendrées ne sont pas les mêmes)

    En effet si i=4 (i=100b), alors i-2=2 (100b-010b=010b), alors que i and (not 2)=4 (100b and not 010b=010b).

    Conclusion, en faisant dmFields:=dmFields - dm_Papersize, tu risques de te retrouver avec le bit de dm_Papersize actif : tout ce que tu ne veux pas !

    Et d'ailleurs je dirais : et vice versa pour les plus, il vaut mieux mettre des or à la place...

    Bref, j'aurais plutôt écrit ceci :
    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
    procedure ForceTaillePapier(Largeur,Hauteur:integer);
    var
      Device, Driver, Port: array[0..80] of Char;
      DevMode: THandle;
      pDevmode: PDeviceMode;
    begin
      Printer.GetPrinter(Device, Driver, Port, DevMode);
      if Devmode <> 0 then begin
        pDevMode := GlobalLock(Devmode);
        if pDevmode <> nil then
        try
          with pDevmode^ do begin
            dmPaperlength:=Hauteur;
            dmPaperwidth:=Largeur;
            dmFields := (dmFields or dm_Paperlength or dm_Paperwidth) and (not dm_Papersize);
          end;
        finally
          GlobalUnlock(Devmode);
        end;
      end; { If }
    end;
    Bidouilleuse Delphi

Discussions similaires

  1. Format papier perso
    Par pelforth dans le forum Général VBA
    Réponses: 4
    Dernier message: 20/12/2009, 18h55
  2. Format papier et bac de depart par prog en delphi
    Par b b77 dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 15/11/2009, 17h09
  3. Problème liste format papier Autocad
    Par allergique dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 20/08/2009, 20h14
  4. Réponses: 2
    Dernier message: 23/12/2008, 12h04
  5. [Impression] Format papier
    Par narmataru dans le forum Windows 2000/Me/98/95
    Réponses: 3
    Dernier message: 03/09/2007, 15h33

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