Imprimir um Memo no Delphi – Opção 1
Para imprimir um campo memo (objeto TMemo) podemos usar 
diversos métodos. Um deles é acessar a impressora como se
fosse um arquivo. Para isto é necessário atribuir a impressora
a uma variável arquivo (AssignPrn), abrir o arquivo (ReWrite),
escrever nele (write e writeln) e finalmente fechar o 
arquivo (CloseFile). Talvez seja mais fácil entender o que 
estou dizendo estudando a rotina abaixo.



procedure ImprimirMemo(Memo: TMemo);
var
  I: integer;
  F: Text;
begin
  { Usa na impressora a mesma fonte do memo }
  Printer.Canvas.Font.Assign(Memo.Font);

  AssignPrn(F);
  Rewrite(F);
  try
    for I := 0 to Memo.Lines.Count -1 do
      WriteLn(F, Memo.Lines[I]);
  finally
    CloseFile(F);
  end;
end;

Para imprimir um memo com esta rotina basta chamá-la passando
como parâmetro o objeto TMemo. Exemplo:

ImprimirMemo(Memo1);

Observações
Este método está longe de ser perfeito, mas quebra um galho. Uma alternativa que oferece mais precisão na impressão é usar o Canvas do objeto Printer (Printer.Canvas). Outra alternativa bastante prática é usar os recursos de um gerador de relatórios (exemplo: QuickReport).