Usamos a seguinte rotina para isso:

function AtivaImpressoras(sImpressora: String) :Boolean;
var tsImpressoras     : TStrings;
    iContador         : Integer;
begin
   tsImpressoras      := Printer.Printers;

   for iContador := 0 to (tsImpressoras.Count - 1) do
      tsImpressoras[iContador]   := TrimRight(tsImpressoras[iContador]);

   Result   := tsImpressoras.IndexOf(TrimRight(sImpressora)) > -1;

   if Result then
      Printer.PrinterIndex  := tsImpressoras.IndexOf(TrimRight(sImpressora))
   else
   begin
      Printer.PrinterIndex  := -1;

      Application.MessageBox(PChar('Não foi possivel ativar a impressora 
[' + sImpressora + '] em questão. Verifique !'), 'Atenção' , 
mb_TaskModal + mb_ok + mb_IconWarning);
   end;
end;


Ricardo César Cardoso escreveu:
>
> Então de certa maneira isso aqui vira uma dica, não? Agora e se a 
> bendita da impressora USB não for padrão, como faço para identificar, 
> dentro da lista de impressoras que o objeto TPrinter (que é onde deve 
> estar PrinterIndex)?
>
> Não estou perguntado por preguiça, mas por não estar com o Delphi e 
> seu Help em mãos para consulta. A propósito; alguém sabe se é possível 
> consultar o Help do Delphi on-line (essa pergunta é por preguiça, 
> hehehehe)
>
> []'s
> Ricardo.
>
> __________________________________________________________
>
> "Vamos ajudar o Grupo e o Yahoo! Apague o conteúdo irrelevante!"
>
> --- Em sex, 6/2/09, Adriano Santos <fale...@adrianosantos.pro.br 
> <mailto:falecom%40adrianosantos.pro.br>> escreveu:
>
> Funciona sim, ele vai usar a impressoa ativa no momento. A que está no 
> PrinterIndex.
>
> 2009/2/6 deco0_07 <andre.almeida@ medicator. com.br>:
>
> > Bom, aqui funcionou, só precisei declarar na uses "Printers" pro
> > AssisgnPrn..
> >
>
> > --- Em delphi...@yahoogrup os.com.br, Ricardo César Cardoso
> > <ricardo_engsoft@ ...> escreveu
> >
> >>
> >> Bom dia!
> >>
> >> Pesquisando sobre o assunto para um colega de outra lista, me
> > deparei com o seguinte código fonte:
> >>
> >> [code]
> >> var
> >> Arq : TextFile
> >> Begin
> >> if PrintDialog1. Execute then begin
> >> AssingPrn(Arq) ;
> >> ReWrite(arq) ;
> >> Writeln(Arq, 'Este é um teste !!');
> >> CloseFile(Arq) ;
> >> end;
> >> End;
> >> [/code]
> >>
> >> Alguém que tenha uma impressora USB poderia fazer a caridade de
> > testar se esse código funciona? Se tiver mais de uma impressora e
> > puder repetir o teste seria ótimo.
> >>
> >> Muito do material que achei para impressão USB está em inglês e é
> > muito nebuloso, para não dizer um quebra-cabeça. Se o código acima
> > funcionar, problema resolvido. Mas se não funcionar, queria tentar
> > montar esse quebra-cabeça.
> >>
> >> []'s
> >> Ricardo.
> >
> >
> -- 
> Adriano Santos
> Director X-35 Consulting and Development
> IT Manager SoftPark
> Chief Editor Magazines ClubeDelphi && WebMobile
> www.delphitodelphi.blogspot.com
> www.adrianosantos.pro.br
> www.devmedia.com.br
> www.dug-sp.com
>
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com <http://br.maisbuscados.yahoo.com>
>
> 
>
>
> __________ Information from ESET NOD32 Antivirus, version of virus 
> signature database 3832 (20090206) __________
>
> The message was checked by ESET NOD32 Antivirus.
>
> http://www.eset.com


[As partes desta mensagem que não continham texto foram removidas]

Responder a