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!