var
 F: TextFile;
 TempStr, PageNum: String;
 Ctr, X, PHeight, LineSpace: Integer;
begin
 Ctr := 1; x := 0;
 AssignFile(F, Fname); { Zwizujemy zmienn z plikiem tekstowym }
 Reset(F);             { Otwieramy plik }

 if PrintDialog1.Execute then
 begin
  Printer.BeginDoc;               { Rozpoczynamy proces drukowania }
  PHeight := Printer.PageHeight;  { Wysoko strony }
  LineSpace := PHeight div 60;    { Obliczamy odstp midzy wierszami }
  PageNum := IntToStr(Printer.PageNumber);   { Numer strony }
  Label1.Caption :=Now Printing+ PageNum +Page;
  while not Eof(F) do
  begin
   Readln(F, TempStr);      { Pobieramy z pliku kolejny wiersz }
   Printer.Canvas.TextOut(0,x,TempStr);  { Drukujemy go }
   x := x + LineSpace;                   { Zwikszamy wsprzdn pionow }
   Ctr := Ctr + 1;                       { Zwikszamy licznik wierszy }
     if Ctr > 59 then           { Jeli koniec strony... }
     begin
      Printer.NewPage;     { Nowa strona }
      x := 0;
      Ctr := 0;
      PageNum := IntToStr(Printer.PageNumber);
      Label1.Caption :=Now Printing+ PageNum +Page;
     end;
  end;
  Printer.EndDoc;    { Wysanie danych na drukark }
 end;
 CloseFile(F);
 Label1.Caption :=Printing Complete!;
end;

Jedyna rnica w stosunku do poprzedniej wersji tej procedury polega na zamkniciu instrukcji drukujcych w bloku:

if PrintDialog1.Execute then
begin
 .......
 .......
 .......
end;