I don't know exactly what you are asking, but you can define 2-dimensional arrays that store any information. Dynamic or static arrays of records.

Code:
TSomeCell = record
  someNumber: integer;
  someText: string;
end;
...
grid: array[0..8, 0..8] of TSomeCell; // Defines a 9x9 grid
...
// Access it easily
grid[1, 2].someNumber:=1;
If you need dynamic array it's:
Code:
grid: array of array of TSomeCell;
...
setlength(grid, 9, 9); // Defines a 9x9 grid, and you can change it while program runs