Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 14 de Agosto de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
96 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Imprimindo com Printer.Canvas
Publicado por ActiveDelphi : Sábado, Agosto 22, 2009 - 12:00 GMT-3 (1477 leituras)
Comentários 3 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador 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



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: gilsonnrodrigues (gilsonnr@hotmail.com) : Ago 22, 2009 - 12:24
(Informações sobre o membro | Enviar uma mensagem) http://
só uma correção..

Except
Printer.Abort; //Abortar a impressão
Raise; //LANÇAR A EXCEÇÃO e não "exibir a mensagem de erro que causou a exceção"
end;


por: muit0loco (junior_frack@hotmail.com) : Mai 30, 2010 - 10:13
(Informações sobre o membro | Enviar uma mensagem)
Amigo, se eu quiser ao invés de um texto de fora , querer imprimir o que está dentro do "edit1.text" por exemplo, eu posso ?
como faria isso?

obrigado.


por: angrasystem (lucio.c@terra.com.br) : Set 13, 2010 - 04:40
(Informações sobre o membro | Enviar uma mensagem) http://
para ficar perfeito... como fazer para ajustar as margens: left, rigth, top e bottom???
Valeu... se puder enviar por e-mail: lucio.c@terra.com.br
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados