Impression automatique avec un TWebBrowser [Résolu]

neo557 34 Messages postés mardi 13 janvier 2004Date d'inscription 30 août 2006 Dernière intervention - 12 janv. 2005 à 17:22 - Dernière réponse : neo557 34 Messages postés mardi 13 janvier 2004Date d'inscription 30 août 2006 Dernière intervention
- 13 janv. 2005 à 10:17
Bonjour,

Je tourne en rond depuis quelque temps sur un petit problème...

Dans mon application j'ai un WebBrowser dont je me sert pour afficher une image. Une fois celle-ci affichée je l'imprime.

Je fait ceci :
WebBrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT );

Ce qui a pour effet de m'afficher la boîte dialogue de l'imprimante et me permet de lancer mon impression.

Mon problème est que je voudrais pouvoir choisir mon imprimante (car ce n'est pas celle par défaut), mettre l'orientation de la page et choisir les marge par le code. J'aimerai savoir comment modifier les paramètres d'impression ainsi que l'imprimante par code.

Merci d'avance
Nelson

P.S : j'ai essayé les composants TPrinters et ça n'a rien donné.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 13 janv. 2005 à 09:28
3
Merci
Alors voici deux fonctions que j'utilise. Une pour récupérer
l'imprimante par defaut et l'autre pour changer l'imprimante par
défaut. Je pense qu'en regardant de plus pres tu pourras changer
egalement les marges et orientation.



{------------------------------------------------------------------------------}


{ Permet de mettre une imprimante par defaut. }


{------------------------------------------------------------------------------}


procedure SetDefaultPrinter(PrinterName : String);



var


szPrinterName, szIniInfo, szSection : PChar;


Arr_Tmp : Array[0..64] of Char;



begin



Try


{Réservation de l'espace mémoire}


GetMem(szPrinterName,SizeOf(Char) * 256);


GetMem(szIniInfo,SizeOf(Char) * 256);


GetMem(szSection,10) ;


{Récupération des informations sur l'imprimante}


StrPCopy(szPrinterName,PrinterName);


GetProfileString('DEVICES',szPrinterName,nil,szIniInfo,254) ;



{Si on trouve les infos de l imprimante}


If szIniInfo^ <> #0 then


begin


StrCat(szPrinterName,',') ;


StrCat(szPrinterName,szIniInfo) ;


{On Change l imprimante}


WriteProfileString('Windows','DEVICE',szPrinterName) ;


{On informe les applications du changement}


StrCopy(Arr_Tmp, 'windows');


SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@Arr_Tmp));


// StrCopy(szSection,'Windows') ;


// Ne fonctionne pas avec Win98/ Me : PostMessage(HWND_BROADCAST,WM_WININICHANGE,0,LongInt(szSection)) ;


end;



{On libère l'espace memoire}


FreeMem(szPrinterName,SizeOf(Char) * 256) ;


FreeMem(szIniInfo,SizeOf(Char) * 256) ;


FreeMem(szSection,10) ;


except



{Pas d'espace mémoire}


on E: EOutOfMemory do ShowMessage(E.Message) ;


{Erreur de pointeur}


on E: EInvalidPointer do ShowMessage(E.Message) ;


end;


end;



{------------------------------------------------------------------------------}


{ Permet de récupérer l'imprimante par defaut. }


{------------------------------------------------------------------------------}


function GetDefaultPrinter : String;



var


szCurrentPrinter : PChar;



begin



Try


{Réservation de l'espace mémoire}


GetMem(szCurrentPrinter,SizeOf(Char) * 256);


{Information sur l'imprimante par défaut}


GetProfileString('Windows', 'DEVICE', '', szCurrentPrinter, 254);


{On renvoie le nom de l'imprimante par défaut}


Result := Copy(szCurrentPrinter, 1, Pos(',', szCurrentPrinter)-1);


{On vide la mémoire}


FreeMem(szCurrentPrinter, SizeOf(Char) * 256) ;


except


Result := '';


end;


end;



Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.

Merci jmp77 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jmp77
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 12 janv. 2005 à 22:08
0
Merci
Je connais pas tres bien le composant WebBrowser pourrais tu me dire comment tu fais pour imprimer avec et je verrais si ma soluce pourra te servir.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Commenter la réponse de jmp77
neo557 34 Messages postés mardi 13 janvier 2004Date d'inscription 30 août 2006 Dernière intervention - 13 janv. 2005 à 08:30
0
Merci
Et bien en utilisant la commande :

WebBrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER );

Tu imprime directement le contenu de ton webBrowser sans même demander à l'utilisateur. En mettant OLECMDEXECOPT_PROMPTUSER comme 2ème paramètre tu vas afficher la boîte de dialogue d'impression.

Le seul problème de l'impression sans demande à l'utilisateur c'est qu'il prend tout par défaut (imprimante, marges, orientation).

Ce que j'aimerais c'est utiliser cette commande, mais qu'avant je puisse modifier les paramètres d'impression.

Voilà.

Nelson
Commenter la réponse de neo557
neo557 34 Messages postés mardi 13 janvier 2004Date d'inscription 30 août 2006 Dernière intervention - 13 janv. 2005 à 10:17
0
Merci
Merci pour ton code.

avec ceci je peux effectivement changer d'imprimante par défaut quand bon me semble.

Je n'ai pas encore vérifier comment je peux orienter le papier et écrire les marges en code mais j'ai remarqué que avec la fonction que tu m'a donné il prend non seulement l'imprimante choisie comme imprimante par défaut mais il reprend également tous les paramètres de l'imprimante...

Je veux dire que je n'ai qu'a effectuer mes réglages dans les options de l'imprimante sous windows et ils seront pris en compte sous delphi.

C'est nickel merci beuacoup !!!

Nelson
Commenter la réponse de neo557

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.