Olá amigos da Active Delphi. Sou de certo modo “iniciante” em Delphi, igual a muitos que freqüentam o site, e trago um exemplo de uma tarefa simples, porém útil, que é enviar uma impressão diretamente à impressora
Gostaria de lembrar que a versão do Delphi utilizada é o Delphi 5, porém, o exemplo funcionará em qualquer versão mais recente.
Vamos lá.
Abaixo da seção implementation, vamos adicionar a seguinte linha:
uses Printers;
Assim você estará informando que vai utilizar a biblioteca Printers (nativa do Delphi, que contém procedimentos destinados à impressão).
Feito isso, vamos adicionar um componente do tipo PrintDialog, disponível na aba de componentes do Delphi, dentro de Dialogs.
Coloque um button e no seu evento onClick, faça os passos a seguir.
Vamos exibir o Diálogo de impressão com a ajuda do nosso componente, para o usuário poder escolher a impressora e ajustar as propriedades dela. Para isso faremos o seguinte:
begin
if not (PrintDialog1.execute) then Exit;
Perceba que o procedimento execute do PrintDialog retorna um valor do tipo boolean (verdadeiro ou falso), ou seja, caso o usuário clique em cancelar, o procedimento vai retornar false e assim cairá na condição, fazendo com que saia da nosso evento onClick do botão (Exit);
Após isso, vamos mudar o cursor para o desenho da ampulheta, para mostrar ao usuário que o sistema está processando.
Screen.Cursor := crHourGlass;
Agora vamos à impressão em si:
Try
Printer.BeginDoc; //Iniciar um novo documento para impressora
Try
With Printer.Canvas do //Segura o método Canvas da biblioteca Printer
Begin
Font.Name := 'Arial'; //Define a fonte a ser usada
Font.Size := 10; //Define o tamanho da fonte
Font.Style := []; //Estilo da fonte, nesse caso vou usar a fonte normal
TextOut(0,0,'Teste'); //Envia o texto “teste” na posição (X,Y - Hor. e Vert.)
End;
Printer.EndDoc; //Esse é o procedimento para indicar a finalização do documento,
//e que o mesmo pode ser enviado à impressora.
Agora, que enviamos o nosso texto à impressora, vamos colocar um método para cancelar a impressão caso isso gere algum erro:
Except
on E: Exception do //Caso ocorra algum erro
Begin
Printer.Abort; //Abortar a impressão
Printer.EndDoc; //Finalizar o documento caso ainda não tenha sido.
Raise; //Exibir a mensagem de erro que causou a exceção
end;
end;
finally
Screen.Cursor := crDefault; //Restaura o cursor para o padrão.
end;
end;
E pronto, um simples código no evento onClick do botão é o suficiente pra fazer uma impressão direta na impressora.
Você ainda pode ver mais sobre este assunto nos links:
Impressão Direta com TCanvas - (Exemplo Atualizado em 16/05/08)
Imprimindo relatórios com o Canvas
Espero ter ajudado!
Por: Ricardo Fiorani
Contato: ricardo.fiorani@gmail.com
|