unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, Grids, StdCtrls, Series, Printers;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    StringGrid1: TStringGrid;
    PrintDialog1: TPrintDialog;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  j: Integer;
begin
  //wypelnianie tabeli
  with Stringgrid1 do
  for I := 0 to ColCount - 1 do
    for j := 0 to RowCount - 1 do
      Cells[i,j]:=InttoStr(1+Random(10));


end;

procedure TForm1.Button2Click(Sender: TObject);
var l,m,i,h:integer;
begin
  if PrintDialog1.Execute then
  begin
   h:=0;  //przesuniecie tabeli w pionie
 try
 begin
   Printer.BeginDoc;i:=1;
   Printer.Canvas.Font.Name:='Arial';
   Printer.Canvas.Font.Size:=10;
   Printer.Canvas.Font.Style:=Printer.Canvas.Font.Style+[fsBold];
   //drukowanie wiersza tytułowego
   Printer.Canvas.TextOut(100,100+h,'Nazwisko i imię'); //nazwisko i imię
   l:=750;
   Printer.Canvas.TextOut(100+l,100+h,'Przedmiot');  //przedmiot
   l:=l+750;
   Printer.Canvas.TextOut(100+l,100+h,'ŚREDNIA');  //suma
   l:=l+500;
   Printer.Canvas.TextOut(100+l,100+h,' Liter.');  //liter
   l:=l+500;
   Printer.Canvas.TextOut(100+l,100+h,' Opuszcz.');  //opuszcz.
   l:=l+500;
   Printer.Canvas.TextOut(100+l,100+h,' Nieodb. ');  // nieodb.
   //obliczenie liczby pikseli do następnego wiersza
   h:=Printer.Canvas.TextHeight('ABC')+10;
   //zmiana stylu drukowania
   Printer.Canvas.Font.Style:=Printer.Canvas.Font.Style-[fsBold];
   //drukowanie pozostałych wierszy tabeli
   with StringGrid1 do
    for i:=1 to RowCount-1 do
     if Cells[0,i]<>'' then
     begin
       Printer.Canvas.TextOut(100,100+h,Cells[0,i]);   //nazwisko i imię
       l:=800;
       Printer.Canvas.TextOut(100+l,100+h,Cells[1,i]);  //przedmiot
       l:=l+800;
       Printer.Canvas.TextOut(100+l,100+h,Cells[2,i]);  //suma
       l:=l+550;
       Printer.Canvas.TextOut(100+l,100+h,Cells[3,i]);  //liter
       l:=l+550;
       Printer.Canvas.TextOut(100+l,100+h,Cells[4,i]);  //opuszcz.
       l:=l+550;
       Printer.Canvas.TextOut(100+l,100+h,Cells[5,i]);  // nieodb.
       h:=h+Printer.Canvas.TextHeight('ABC')+5;
    end;
   Printer.EndDoc
  end;
  except
     ShowMessage('Problem z drukowaniem');
  end //try
  end
  else
    ShowMessage('Anulowano drukowanie');
  end;

end.
