uses
classes, printers, osprinters, math;
const
LineCount = 50; // Adjust font size to fit 50 lines on page
procedure PrintStrings(aLines:TStrings);
var
PrintArea,
LineRect : TRect;
I,
LineHeight : Integer;
begin
// half of an inch margin for each side
with PrintArea do
begin
Left:=Printer.XDPI div 2;
Top:=Printer.YDPI div 2;
Right:=Printer.PageWidth-Printer.XDPI div 2;
Bottom:=Printer.PageHeight-Printer.YDPI div 2;
end;
LineRect.Left:=PrintArea.Left;
LineRect.Right:=PrintArea.Right;
LineRect.Top:=PrintArea.Top;
Printer.Title:='My Report';
Printer.BeginDoc;
try
Printer.Canvas.Font.Height:=(PrintArea.Bottom-PrintArea.Top) div LineCount;
for I:=0 to Min(aLines.Count-1,LineCount-1) do
begin
if Trim(aLines[I])='' then LineHeight:=Printer.Canvas.TextHeight('X')
else LineHeight:=Printer.Canvas.TextHeight(aLines[I]);
LineRect.Bottom:=LineRect.Top+LineHeight;
Printer.Canvas.TextRect(LineRect,LineRect.Left,LineRect.Top,aLines[I]);
LineRect.Top:=LineRect.Bottom;
end;
finally
Printer.EndDoc;
end;
end;