如上

解决方案 »

  1.   

    procedure PrintMemo(M: TMemo, ACaption: string);
    begin
      with TRichEdit.Create(M.Parent) do try
        Lines.Assign(M.Lines);
        Print(ACaption);
      finally
        Free;
      end;
    end;
      

  2.   

    Sorry:TMemo后面的逗号“,”应为分号“;”。
      

  3.   

    在printer对象的canvas上直接画文字。
    如:
          Printer.Title:='BKReport';
          Printer.BeginDoc;  Printer.Canvas.Font.Name:=TransStr('TitleFont',Canvas.Font.Name);
      Printer.Canvas.Font.Size:=25;
      Printer.Canvas.Font.Style:=[fsBold];
      Printer.Canvas.Font.Color:=clBlack;
      PrintRect.Left:=Round(Wid*1.6) div 21;
      PrintRect.Top:=Hei*5 div 30;
      PrintRect.Right:=Wid*14 div 21;
      PrintRect.Bottom:=PrintRect.Top+100;
      Printer.Canvas.TextRect(PrintRect,PrintRect.Left,PrintRect.Top,TransStr('Section1Label1','Section1Label1')+Edit1.Text);      Printer.EndDoc;
          Screen.Cursor:=crDefault;
      

  4.   

    呵呵,昨天也写了一个,现在贴出来
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i:integer;
    prntext:system.Text;
    begin
      if printdialog1.Execute then
      assignprn(prntext);
      rewrite(prntext);
      printer.Canvas.Font :=memo1.Font;
      for i:=0 to memo1.Lines.Count -1 do
      writeln(prntext,memo1.lines[i]);
      system.Close(prntext);
    end;