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

Deixar configurado impressora para determinado tipo de relatório(Resol


robinhocne

Pergunta

Olá pessoal,

Tenha no meu banco de dados Firebird uma tabela chamada configurações que tenho dois campos string como ImprRelatorios e ImprEtiquetas...

então eu queria na minha janela de configurações buscar as impressora que tenho instaladas no pc e gravar por exemplo para a ImprRelatorios a Lx 300 + II e para ImprEtiquetas a Hp, pois para que possa imprimir direto sem configurar a impressora, pois ai deixaria gravado no banco as impressoras de qual é qual e assim nos relatorios eu já informava...

como poderia fazer isso, pesquisei e não consegui achar nada, algém poderia me ajudar ??

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá robinhocne, bom, uma idéia seria primeiro você capturar a impressora padrão atual do micro e jogar em uma variável, aí voce substitui a padrão pela que você deseja imprimir, manda a impressão e joga impressora que ficou armazenada na variável para padrão, é testar e ver se funciona.

Promeiro declare a Uses Printers , aí crie a procedure:

Procedure MudarImpressoraPadrao(PrinterName: string);
a procedure em questão:
procedure TFrm_Config.MudarImpressoraPadrao(PrinterName: string);
var
I: Integer;
Device : PChar;
Driver : Pchar;
Port : Pchar;
HdeviceMode: Thandle;
aPrinter : TPrinter;
begin
  Printer.PrinterIndex := -1;
  getmem(Device, 255);
  getmem(Driver, 255);
  getmem(Port, 255);
  aPrinter := TPrinter.create;
  for I := 0 to Printer.printers.Count-1 do
  begin
    if Printer.printers[i] = PrinterName then
    begin
      aprinter.printerindex := i;
      aPrinter.getprinter
      (device, driver, port, HdeviceMode);
      StrCat(Device, ',');
      StrCat(Device, Driver );
      StrCat(Device, Port );
      WriteProfileString('windows', 'device', Device);
      StrCopy( Device, 'windows' );
      SendMessage(HWND_BROADCAST, WM_WININICHANGE,
      0, Longint(@Device));
    end;
  end;
  Freemem(Device, 255);
  Freemem(Driver, 255);
  Freemem(Port, 255);
  aPrinter.Free;  
end;
Aí voce poderia chamar a impressao:
procedure TFrm_Fatura.Imprime_Duplicata;
var
padrão:string; //essa variável vai armazenar a impressora padrão atual
begin
padrão:=printer.Printers.Strings[printer.PrinterIndex];
Frm_Config.MudarImpressoraPadrao(ImpressoraDeSuaEscolha);
//Comandos e dados à imprimir
//...
//...
Frm_Config.MudarImpressoraPadrao(padrão);{Aqui voce coloca novamente a impressora padrão do sistema}
end;

Testa aí e ve se funciona para o seu caso.

Valeu

Link para o comentário
Compartilhar em outros sites

  • 0

Muito Obrigado pela ajuda Joao Paulo...

Peguei o seu procedimento para mudar a impressora e antes listei todas as impressoras instaladas e salvei na tabela configuração ....

procedure TFrmImpressoras.SpbSairClick(Sender: TObject);
begin
  close;

  with DtmLoja.QryLoja do
    Begin
      Close;
      SQL.Clear;
      SQL.Add ('update Configuracao set ImprRelatorios =' + (QuotedStr(CboRelatorios.Text)) + ','
             + 'ImprEtiquetas = ' + (QuotedStr(CboEtiquetas.Text)));
      ExecSQL;
    end;

    DtmLoja.QryLoja.Transaction.CommitRetaining;
end;

procedure TFrmImpressoras.FormShow(Sender: TObject);
begin
  for i := 1 to Printer.Printers.Count do
    begin
       CboRelatorios.Items.Add(Printer.Printers[i - 1]);
       CboEtiquetas.Items.Add(Printer.Printers[i - 1]);       
    end;
    
  ConsultaRegistros('Configuracao','ImprRelatorios, ImprEtiquetas','');
    if DtmLoja.QryLoja.RecordCount <> 0 then
      begin
        CboRelatorios.Text := LeDados('ImprRelatorios');
        CboEtiquetas.Text  := LeDados('ImprEtiquetas');
      end;

end;
ai antes de eu chamar o relatorio mudei o nome da impressora. o ConsultaRegistro é uma funcão que eu uso para consultar os meus registros..
ConsultaRegistros('Configuracao','ImprEtiquetas','');
    if DtmLoja.QryLoja.RecordCount <> 0 then
      begin
        FrmLoja.MudarImpressoraPadrao(LeDados('ImprEtiquetas'));
      end;

O procedimento MudarImpressoraPadrao eu coloquei no meu formulario principal (FrmLoja) ai chamo ele e já mudo o nome para o que estou obtendo na minha consulta!

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
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...