Dicas de impressão no Delphi

Impressão Com o TPrinter ( Via gerenciador de impressão)

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Linha:integer;
  Tamanho:integer;
  Coluna:integer;
begin
  Printer.Orientation := poLandscape;
  Printer.BeginDoc;
  Printer.Canvas.Pen.Width := 5;
  Printer.Canvas.Font.Name := 'Times New Roman';
  Printer.Canvas.Font.Size := 10;
  Linha := 20;
  Coluna:= 20;
  Tamanho := Printer.Canvas.TextWidth('a');
  Table1.First;
    while not Table1.Eof do begin
      if Linha = 20 then  begin
        Coluna := 20;
        Printer.Canvas.TextOut(0,Linha,'Relação de Clientes');
        Linha := Linha - Printer.Canvas.Font.Height + 5 ;
        Printer.Canvas.TextOut(Coluna,Linha,'Cod');
        Coluna:= Coluna + (Tamanho * 5 );
        Printer.Canvas.TextOut(Coluna,Linha,'Nome');
        Coluna:= Coluna + (Tamanho * 30);
        Printer.Canvas.TextOut(Coluna,Linha,'Endereço');
        Coluna:= Coluna + (Tamanho * 30);
        Linha := Linha - Printer.Canvas.Font.Height + 5 ;
      end;
      Coluna := 20 ;
      Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName('Codigo').AsString);
      Coluna:= Coluna + (Tamanho * 5 );
      Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName('Nome').AsString);
      Coluna:= Coluna + (Tamanho * 30);
      Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName('End').AsString);
      Coluna:= Coluna + (Tamanho * 30);
      Linha := Linha - Printer.Canvas.Font.Height + 5 ;
      Table1.Next;
          if Linha > Printer.PageHeight-20 then  Begin
             Printer.NewPage;
             Linha := 20;
          end;
    end;
  Printer.EndDoc;
end;

Imprimindo com o Bloco de Notas

WinExec('NotePad.exe /p c:\FileName.txt', 0)

Imprimindo Forms

O exemplo a seguir é um procedimento para imprimir um form. Para imprimir o form, basta informar o nome do mesmo como parâmetro: PrintForm(Form1). Antes de imprimir, a cor atual do form é salva em OldColor e alterada para clWhite (frm.Color := clWhite), para evitar gasto excessivo de tinta da impressora (ou tonner).

PrintForm
uses
  Windows, SysUtils, Printers, Forms, Graphics, Controls, Classes;
  .
  .
  .
procedure PrintForm(frm: TForm);
var
  bmp: TBitMap;
  x, y, WDPI, HDPI: Integer;
  OldColor: TColor;
begin
  Screen.Cursor := crHourGlass;
  OldColor := frm.Color;
  frm.Color := clWhite;
  frm.Update;
  bmp := frm.GetFormImage;

  with Printer do
  begin
  Orientation := poLandscape;
  BeginDoc;
  HDPI := PageHeight div 8;
  WDPI := PageWidth div 8;
  x := PageWidth - Round(WDPI * 0.4); {0.4" margem direita}
  y := PageHeight - Round(HDPI * 0.5); {0.5" Altura do rodapé}
  Canvas.StretchDraw(Rect(0, 0, x, y), bmp);
  EndDoc;
  end;
  bmp.Free;
  frm.Color := OldColor;
  Screen.Cursor := crDefault;
end;