Bonjour
Je chercher la moyen de paramettrer le format du papier pour l'imprimante sans passer par PRINTERSETUPDIALOG.
Merci
Jean
Bonjour
Je chercher la moyen de paramettrer le format du papier pour l'imprimante sans passer par PRINTERSETUPDIALOG.
Merci
Jean
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 !
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
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.
Bonjour
J'ai essaye cette sequence d'instructions trouve dans le forum
Et d'apres ZAX-TFH cela fonctionne, mais moi je suis t5oujours au meme format que celui indique dans Proprietes de Windows.
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;
Ou est mon erreur.
Merci
Jean
[Balises CODE rajoutées par Pedro. merci d'y penser à l'avenir]
Bonjour,
Encore de la lecture :
http://www.developpez.net/forums/vie...asc&highlight=
Courage et bonne progr
@+
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]
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)Envoyé par bresse
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;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager