unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids; //moduł Grids trzeba dopisać do listy
type
TSiatkaN=class(TStringGrid) //w nowej klasie TSiatkaN zmieniamy treść procedury
                            //wirtualnej DrawCell
         procedure DrawCell(ACol, ARow: Longint; ARect: TRect;AState: TGridDrawState);
                   override;
end;
TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
end;
var
  Form1: TForm1;
Siatka: TSiatkaN;//zmienną glob. Siatka można zadeklarować również w części public klasy
                // TForm1
implementation
{$R *.dfm}

//zmiana treści procedury DrawCell
procedure TSiatkaN.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
begin
  if DefaultDrawing then Canvas.TextRect(ARect, ARect.Right- Canvas.TextWidth(Cells
  [Acol,Arow])-4, ARect.Top+2, Cells[ACol, ARow]);
end;

//utworzenie obiektu Siatka klasy TSiatkaN i wyświetlenie go na formularzu
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Siatka<>nil then
  begin
    Siatka.Free;
    Siatka:=nil;
  end
  else
  begin
    Siatka:=TSiatkaN.Create(Self);
    Siatka.Parent:=Form1;
    Siatka.DefaultDrawing:=true;
    Siatka.Options:= Siatka.Options +[goEditing];//możl. wprowadzania danych
    Siatka.Cells[1,0]:='123';
    Siatka.Cells[2,0]:='3';
  end;
end;

end.

