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

Setar Impressora Para O Tprinter


Morcego

Pergunta

Camaradas

Alguém pode me ajudar a setar uma impressora que não a padrão para o TPrinter pelo nome dela.

Achei algumas rotinas que alteravam a impressora para padrão, mas isso não me resolve pois tenho que manter a impressora padrão e imprimir em uma matricial específica, e para isso estou usando a impressão direta no canvas do Tprinter.

Valeu a força,

Morcego

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá amigão vai ai uma rotina para setar a impressora pelo nome:

procedure SetDefaultPrinter(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;

OBS não testei ela... mas vê ai se serve para ti.

abraços

Alexandre

Link para o comentário
Compartilhar em outros sites

  • 0
Achei algumas rotinas que alteravam a impressora para padrão, mas isso não me resolve pois tenho que manter a impressora padrão

Acho que o que o colega Morcego deseja é: não alterar a impressora padrão do sistema, mas sim, a utilizada pelo programa quando manipulando TPrinter.

Assim, não testei a impressão direta no canvas, mas testando com a caixa de diálogo de impressão obtive a alteração desejada, logo deve funcionar:

// populei um ComboBox para selecionar a impressora e inicializei com a Default
begin
  ...
  ComboBox1.Items.Assign(Printer.Printers);  // Popula lista de impressoras
  ComboBox1.ItemIndex := Printer.PrinterIndex;  // Inicializa com default
  ...
end;
...
// no exemplo, ao clicar num botão...
begin
  ...
  Printer.PrinterIndex := ComboBox1.ItemIndex;  // troca a impressora padrão para o TPrinter
  PrintDialog1.Execute;  // Aqui será exibida a caixa de diálogo da impressora selecionada
  ...
end;

[]s

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...