Ir ao topo

Tecnobyte

Logomarca da Tecnobyte
Contato por WhatsApp

WhatsApp

(69) 3421-6756

Contato por Telefone

(69) 3421-6756

(69) 3421-6757

Enviar mensagem

Enviar

mensagem

Contato por Facebook

Facebook

Contato por Skype

Skype

Atendimento de segunda a sexta, das 08h00 às 19h00 (horário de Brasília).

Delphi - Impressão

Como imprimir o texto de um TMemo usando Canvas?

Banner
Inclua na seção uses: Printers
Já vimos em outra dica como imprimir um memo acessando a 
impressora como se fosse um arquivo. Aqui usaremos outra 
técnica. Vamos usar o objeto Printer e "desenhar" na 
impressora usando Canvas. Esta técnica, dentre outras coisas, 
nos permite controlar:

- Salto de página;
- Espaçamento entre linhas;
- Margens, etc.

Veja esta rotina:

procedure ImprimirMemoComCanvas(Memo: TMemo);
const
  cEspacoLinha = 5;
  cMargemSuperior = 50;
  cMargemEsquerda = 30;
var
  AlturaLinha, Y, I: integer;
begin

  Printer.BeginDoc;
  try
    { Usa na impressora a mesma fonte do memo }
    Printer.Canvas.Font.Assign(Memo.Font);

    AlturaLinha := Printer.Canvas.TextHeight('Tg');

    Y := cMargemSuperior;
    for I := 0 to Memo.Lines.Count -1 do begin

      if Y > Printer.PageHeight then begin
        Printer.NewPage;
        Y := cMargemSuperior;
      end;

      Printer.Canvas.TextOut(cMargemEsquerda, Y, Memo.Lines[I]);

      Y := Y + AlturaLinha + cEspacoLinha;
    end;
  finally
    Printer.EndDoc;
  end;
end;

É um exemplo simples, mas funcional. Para testar chame esta 
rotina passando o objeto TMemo como parâmetro. Exemplo:

ImprimirMemoComCanvas(Memo1);

Observações

A grande vantagem em usar o objeto Printer é que ele nos dá total liberdade para desenhar na impressora. Podemos, por exemplo, desenhar elipses, retângulos, etc. A principal desvantagem é que o programador precisa trabalhar muito para obter a impressão desejada. Mas às vezes vale a pena!

O conteúdo desta página pode ajudar alguém? Compartilhe!