Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Como setar outra impressora em runtime?


junior103

Pergunta

Bom dia. Em VCL com essa rotina seta outra impressora passando o nome como parâmetros.

Printer.PrinterIndex := -1;
   For I := 0 to Printer.printers.Count-1 do begin
      If LowerCase(Printer.Printers[i]) = Lowercase(PrinterName) then begin
         //Altera a classe printer padrão
         if ( Printer.PrinterIndex <> i ) then begin
            Printer.PrinterIndex := i;
         end;

         //Altera a classe printer do FastReport
         frxPrinters.FillPrinters;
         frxPrinters.PrinterIndex := frxPrinters.Printers.IndexOf(PrinterName);

         exit;
      end;
   End;

Preciso fazer o mesma rotina só que em FMX. Algum exemplo de como fazer isso?

Fico no aguardo.

Obrigado. 

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
15 minutos atrás, Jhonas disse:

Primeiramente obrigado pelo retorno.

Esse exemplo não serve pra mim.

Referente o fonte 

Printer.PrinterIndex := -1;
   For I := 0 to Printer.printers.Count-1 do begin
      If LowerCase(Printer.Printers[i]) = Lowercase(PrinterName) then begin
         //Altera a classe printer padrão
         if ( Printer.PrinterIndex <> i ) then begin
            Printer.PrinterIndex := i;
         end;

         //Altera a classe printer do FastReport
         frxPrinters.FillPrinters;
         frxPrinters.PrinterIndex := frxPrinters.Printers.IndexOf(PrinterName);

         exit;
      end;
   End;

eu preciso que funcione em FMX(Firemonkey).

 

A ideia é o seguinte. Na minha maquina possui varias impressoras instalada(IMP1,IMP2 e IMP3), Nessa procedure passo nome de qual impressora desejo imprimir...

No VCL esse fonte acima funciona normal mas em FMX(Firemonkey) não funciona, preciso "migrar para FMX".

Você tem alguma solução?

Fico no aguardo.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • 0

Esse exemplo são uteis para quem precise trabalhar com fastReport. Mas no meu caso não deu certo ainda. 

Preciso Migrar de vcl para fmx o seguinte trecho
Printer.PrinterIndex := -1;
   For I := 0 to Printer.printers.Count-1 do begin
      If LowerCase(Printer.Printers[i]) = Lowercase(PrinterName) then begin
         //Altera a classe printer padrão
         if ( Printer.PrinterIndex <> i ) then begin
            Printer.PrinterIndex := i;
         end;

 

Link para o comentário
Compartilhar em outros sites

  • 0
2 horas atrás, Jhonas disse:

Esse exemplo são uteis para quem precise trabalhar com fastReport. Mas no meu caso não deu certo ainda. 

Preciso Migrar de vcl para fmx o seguinte trecho
Printer.PrinterIndex := -1;
   For I := 0 to Printer.printers.Count-1 do begin
      If LowerCase(Printer.Printers[i]) = Lowercase(PrinterName) then begin
         //Altera a classe printer padrão
         if ( Printer.PrinterIndex <> i ) then begin
            Printer.PrinterIndex := i;
         end;
Link para o comentário
Compartilhar em outros sites

  • 0

voce leu a nota ?

As a note: I'd remove the VCL prefix from your references; it means your code won't be available across platforms. If you just make sure that Printers is in your uses clause, you can use just Printers.Printer, and changing the target platform (VCL Win32/64, FMX 32/64, OSX) will adjust the uses clause for you based on the build configuration.

ou então veja no site da Embarcadero

http://docwiki.embarcadero.com/Libraries/Berlin/en/FMX.Printer.Win.TPrinterWin.SetDefaultPrinter

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
46 minutos atrás, Jhonas disse:

voce leu a nota ?

As a note: I'd remove the VCL prefix from your references; it means your code won't be available across platforms. If you just make sure that Printers is in your uses clause, you can use just Printers.Printer, and changing the target platform (VCL Win32/64, FMX 32/64, OSX) will adjust the uses clause for you based on the build configuration.

ou então veja no site da Embarcadero

http://docwiki.embarcadero.com/Libraries/Berlin/en/FMX.Printer.Win.TPrinterWin.SetDefaultPrinter

abraço

Não estou conseguindo.

Estou usando:

Delphi berlin.

Projeto criado em "Multi-Device application".

(Se fosse em VCl os exemplo passado funciona normal, mas em Multi-Device application que estou tendo dificuldades).

Link para o comentário
Compartilhar em outros sites

  • 0

Link da solução

http://www.activedelphi.com.br/forum/viewtopic.php?p=488447#488447

5 horas atrás, Jhonas disse:

então tente outra abordagem

use o comando Winexec para mudar a impressora via windows


RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "NOME_IMPRESSORA"

abraço

Obrigado pela ajuda. A solução que desejava esta no link que postei.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...