Ola Andre,

Adaptei p/ o que eu precisava e deu certo.

Eu não tinha pensado neste sentido de alterar a impressora padrão, 
imprimir e depois voltar a que estava antes.

Valeu pela ajuda.

--- Em delphi-br@yahoogrupos.com.br, Andre Luis Silveria 
<[EMAIL PROTECTED]> escreveu
>
> procedure FazPrnAtualVirarDefault(Impressora: Integer);
> var
>    Res: DWORD;
>    Device: array[0..255] of char;
>    Driver: array[0..255] of char;
>    Port: array[0..255] of char;
>    WindowsStr: array[0..255] of char;
>    hDeviceMode: THandle;
> begin
>    if (Impressora <= Printer.Printers.Count - 1) then
>    begin
>       // Pega dados da impressora atual
>       Printer.PrinterIndex := Impressora;
>       Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
>       // Monta string exigida pela API do Windows
>       StrCat(Device, ',');
>       StrCat(Device, Driver);
>       StrCat(Device, ',');
>       StrCat(Device, Port);
>       StrPCopy(WindowsStr, 'windows');
>       // Torna a impressora a atual;
>       WriteProfileString(WindowsStr, 'device', Device);
>       SendMessageTimeout(HWND_BROADCAST, WM_WININICHANGE, 0,
>          DWORD(@WindowsStr),
>          SMTO_NORMAL, 1000, Res);
>    end;
> end;
> 
> Pegue o Indice da impressora que o usuário selecionar e seta ela 
como padrão, guarde o indice da impressora padrão anterior.
> 
> ----- Mensagem original ----
> De: monicadachary <[EMAIL PROTECTED]>
> Para: delphi-br@yahoogrupos.com.br
> Enviadas: Quarta-feira, 3 de Outubro de 2007 8:39:13
> Assunto: Re: RES: [delphi-br] Imprimir lista de arquivos
> 
> 
> 
> 
> 
> 
> 
> 
> 
>   
> 
> 
>     
>             Sim, eu tentei, mas o meu problema é que apareça uma 
caixa de 
> 
> impressão no início e que a impressora escolhida seja válida p/ 
todos 
> 
> os arquivos a serem impressos.
> 
> 
> 
> Coloquei no onClick do meu botão imprimir o seguinte código de 
teste:
> 
> 
> 
> if PrinterSetupDialog1 .Execute then
> 
> begin
> 
>    ShellExecute( Handle, 'print','C:\ Teste.doc' , 
nil,nil,SW_HIDE) ;
> 
>    ShellExecute( Handle, 'print','C:\ Teste.pdf' , 
nil,nil,SW_HIDE) ;
> 
> end;
> 
> 
> 
> Porém, o problema é que a impressora escolhida no diálogo é 
ignorada. 
> 
> O ShellExecute é enviado diretamente p/ a impressora padrão da 
> 
> máquina. Como faço p/ a impressora escolhida no PrinterSetup ser 
> 
> levada em conta?
> 
> 
> 
> --- Em [EMAIL PROTECTED] os.com.br, "Davi Eduardo Borges Wall" 
> 
> <davi.wall@ ..> escreveu
> 
> >
> 
> > Oi Monica
> 
> > 
> 
> >  
> 
> > 
> 
> > Por que você não abre uma caixa de dialogo de impressao ?
> 
> > 
> 
> >  
> 
> > 
> 
> > Em dialogs, acho que se chama TPrinterSetup
> 
> > 
> 
> >  
> 
> > 
> 
> > []'s
> 
> > 
> 
> >  
> 
> > 
> 
> > De: [EMAIL PROTECTED] os.com.br [mailto:delphi-
> 
> [EMAIL PROTECTED] com.br] Em nome de monicadachary
> 
> > Enviada em: terça-feira, 2 de outubro de 2007 17:36
> 
> > Para: [EMAIL PROTECTED] os.com.br
> 
> > Assunto: [delphi-br] Imprimir lista de arquivos
> 
> > 
> 
> >  
> 
> > 
> 
> > Olá pessoal,
> 
> > 
> 
> > Tenho uma dúvida quanto a imprimir arquivos no Delphi. Tentei 
> 
> > pesquisar no Google e nas msgs da lista, mas não achei nada que 
se 
> 
> > adaptasse ao que eu preciso.
> 
> > 
> 
> > Tenho uma aplicação na qual há uma lista de arquivos cadastrados 
> 
> pelo 
> 
> > usuário e ele tem a opção de escolher determinados arquivos p/ 
> 
> serem 
> 
> > impressos. Então eu poderia ter na listagem Arquivo1.doc e 
> 
> > Arquivo2.pdf, por exemplo.
> 
> > 
> 
> > O que eu preciso é que quando o usuário selecione os arquivos e 
> 
> > clique no botão p/ imprimir, apareça uma caixa de diálogo de 
> 
> > impressão, na qual ele irá escolher a impressora, e que esta 
> 
> > configuração irá valer p/ todos os arquivos a serem impressos. Ou 
> 
> > seja, seleciona os arquivos, seleciona a impressora e manda todos 
> 
> p/ 
> 
> > a impressão.
> 
> > 
> 
> > Encontrei exemplos de códigos do tipo:
> 
> > 
> 
> > ShellExecute( Handle, 'print','C:\ Teste.doc' , nil,nil,SW_HIDE) ;
> 
> > 
> 
> > Porém envia o arquivo p/ a impressora padrão, não abre o diálogo. 
E 
> 
> > também vale somente p/ um arquivo.
> 
> > 
> 
> > Vocês teriam alguma sugestão de implementação p/ este problema?
> 
> > 
> 
> >  
> 
> > 
> 
> > 
> 
> > 
> 
> > [As partes desta mensagem que não continham texto foram removidas]
> 
> >
> 
> 
> 
> 
> 
>     
>   
> 
>     
>     
> 
> 
> 
> 
> <!--
> 
> #ygrp-mkp{
> border:1px solid #d8d8d8;font-family:Arial;margin:14px 
0px;padding:0px 14px;}
> #ygrp-mkp hr{
> border:1px solid #d8d8d8;}
> #ygrp-mkp #hd{
> color:#628c2a;font-size:85%;font-weight:bold;line-
height:122%;margin:10px 0px;}
> #ygrp-mkp #ads{
> margin-bottom:10px;}
> #ygrp-mkp .ad{
> padding:0 0;}
> #ygrp-mkp .ad a{
> color:#0000ff;text-decoration:none;}
> -->
> 
> 
> 
> <!--
> 
> #ygrp-sponsor #ygrp-lc{
> font-family:Arial;}
> #ygrp-sponsor #ygrp-lc #hd{
> margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;}
> #ygrp-sponsor #ygrp-lc .ad{
> margin-bottom:10px;padding:0 0;}
> -->
> 
> 
> 
> <!--
> 
> #ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, 
sans-serif;}
> #ygrp-mlmsg table {font-size:inherit;font:100%;}
> #ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, 
clean, sans-serif;}
> #ygrp-mlmsg pre, code {font:115% monospace;}
> #ygrp-mlmsg * {line-height:1.22em;}
> #ygrp-text{
> font-family:Georgia;
> }
> #ygrp-text p{
> margin:0 0 1em 0;}
> #ygrp-tpmsgs{
> font-family:Arial;
> clear:both;}
> #ygrp-vitnav{
> padding-top:10px;font-family:Verdana;font-size:77%;margin:0;}
> #ygrp-vitnav a{
> padding:0 1px;}
> #ygrp-actbar{
> clear:both;margin:25px 0;white-space:nowrap;color:#666;text-
align:right;}
> #ygrp-actbar .left{
> float:left;white-space:nowrap;}
> .bld{font-weight:bold;}
> #ygrp-grft{
> font-family:Verdana;font-size:77%;padding:15px 0;}
> #ygrp-ft{
> font-family:verdana;font-size:77%;border-top:1px solid #666;
> padding:5px 0;
> }
> #ygrp-mlmsg #logo{
> padding-bottom:10px;}
> 
> #ygrp-vital{
> background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;}
> #ygrp-vital #vithd{
> font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-
transform:uppercase;}
> #ygrp-vital ul{
> padding:0;margin:2px 0;}
> #ygrp-vital ul li{
> list-style-type:none;clear:both;border:1px solid #e0ecee;
> }
> #ygrp-vital ul li .ct{
> font-weight:bold;color:#ff7900;float:right;width:2em;text-
align:right;padding-right:.5em;}
> #ygrp-vital ul li .cat{
> font-weight:bold;}
> #ygrp-vital a{
> text-decoration:none;}
> 
> #ygrp-vital a:hover{
> text-decoration:underline;}
> 
> #ygrp-sponsor #hd{
> color:#999;font-size:77%;}
> #ygrp-sponsor #ov{
> padding:6px 13px;background-color:#e0ecee;margin-bottom:20px;}
> #ygrp-sponsor #ov ul{
> padding:0 0 0 8px;margin:0;}
> #ygrp-sponsor #ov li{
> list-style-type:square;padding:6px 0;font-size:77%;}
> #ygrp-sponsor #ov li a{
> text-decoration:none;font-size:130%;}
> #ygrp-sponsor #nc{
> background-color:#eee;margin-bottom:20px;padding:0 8px;}
> #ygrp-sponsor .ad{
> padding:8px 0;}
> #ygrp-sponsor .ad #hd1{
> font-family:Arial;font-weight:bold;color:#628c2a;font-
size:100%;line-height:122%;}
> #ygrp-sponsor .ad a{
> text-decoration:none;}
> #ygrp-sponsor .ad a:hover{
> text-decoration:underline;}
> #ygrp-sponsor .ad p{
> margin:0;}
> o{font-size:0;}
> .MsoNormal{
> margin:0 0 0 0;}
> #ygrp-text tt{
> font-size:120%;}
> blockquote{margin:0 0 0 4px;}
> .replbq{margin:4;}
> -->
> 
> 
> 
> 
> 
> 
> 
> 
>       Abra sua conta no Yahoo! Mail, o único sem limite de espaço 
para armazenamento!
> http://br.mail.yahoo.com/
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a