Canvas.TextOut真是好用,Printer也实在好用:
procedure PrintTStrings(Lst : TStrings) ;
var
I,
Line : Integer;
begin
I := 0;
Line := 0 ;
Printer.BeginDoc ;
// TMemo会按照当前宽度自动换行,所以粘帖不换行的文字也没有用
for I := 0 to Lst.Count - 1 do
begin
Printer.Canvas.TextOut(0, Line, Lst[I]); // 以(0,Line)为起点坐标,输出一行文字,真是好用 {Font.Height is calculated as -Font.Size * 72 / Font.PixelsPerInch which returns
a negative number. So Abs() is applied to the Height to make it a non-negative value}
Line := Line + Abs(Printer.Canvas.Font.Height); // 计算行高
if (Line >= Printer.PageHeight) then
Printer.NewPage;
end;
Printer.EndDoc;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
PrintTStrings(Memo1.Lines);
end;