unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    DrawGrid3: TDrawGrid;
    ImageList2: TImageList;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure DrawGrid3SetEditText(Sender: TObject; ACol, ARow: Integer;
      const Value: string);
    procedure DrawGrid3DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure DrawGrid3GetEditText(Sender: TObject; ACol, ARow: Integer;
      var Value: String);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  tekst=record
           wsp:TPoint;
           napis:shortstring;
          end;
var
  Form1: TForm1;
//  w:string;
  ind:integer;
  tab_txt: array[0..20]of tekst;

implementation

{$R *.dfm}

procedure TForm1.DrawGrid3DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var i:integer;
    prost:TRect;
begin
  //do sprawdzenia kolejności wystepowania zdarzeń
   label1.Caption:=label1.Caption+'Drawcell';

  //wypelnianie tekstem wpr.z klawiatury
  for i:=0 to ind-1 do //na poczatku ind=0
   begin
     prost:=Drawgrid3.CellRect(tab_txt[i].wsp.y,tab_txt[i].wsp.x);
     Drawgrid3.Canvas.TextRect(prost,prost.Left+2,prost.Top+2,tab_txt[i].napis);//w);
   end;

  //komorki wypelniane wedlug wspolrzednych
   if (ACol=0)and(ARow=0)then
   ImageList2.Draw(Drawgrid3.Canvas,Rect.Left+4,Rect.Top+2,0);

   if (ACol=2)and(ARow=2)then
   ImageList2.Draw(Drawgrid3.Canvas,Rect.Left+4,Rect.Top+2,1);
end;

//występuje przy wprowadzaniu każdego znaku
procedure TForm1.DrawGrid3SetEditText(Sender: TObject; ACol, ARow: Integer;
  const Value: string);
begin
  //do sprawdzenia kolejności wystepowania zdarzeń
  label1.Caption:=label1.caption+#13+'Setedittext';

  tab_txt[ind-1].wsp.x:=ARow;
  tab_txt[ind-1].wsp.y:=ACol;
  tab_txt[ind-1].napis:=Value;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
end;

//wystepuje jednokrotnie przed zdarzeniem SetEditText
procedure TForm1.DrawGrid3GetEditText(Sender: TObject; ACol, ARow: Integer;
  var Value: String);
begin
  ind:=(ind MOD 20)+1;
  //do sprawdzenia kolejności wystepowania zdarzeń
  label1.Caption:=label1.caption+#13+'Getedittext';
end;

end.
