procedure TForm1.Button2Click(Sender: TObject);
var
 F: TextFile;
 TempStr, PageNum: String;
 Ctr, X, PHeight, LineSpace, LinesPerPage: 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 }

  Printer.Canvas.Font.Size := 18;
  Printer.Canvas.Font.Name :=Times New Roman;
  { obliczamy liczb wierszy }
  LinesPerPage := PHeight div (Printer.Canvas.Font.Size * 2);
  { obliczamy odstp midzy wierszami }
  LineSpace := PHeight div LinesPerPage;

  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 wsprzdna pionow }
   Ctr := Ctr + 1;                       { Zwikszamy licznik wierszy }
     if Ctr > LinesPerPage 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;