Lazarus 3.0
For a single cell, enter as watch:
PCellProps((TFpList((StringGrid1.FGrid.FCellArr.FCols.FList)^[1]).FList)^[1])^
Modify either of the "1" to see other chells.
Hahaha, to make it easy 
I actually wanted to go a step further than the above, but it turned out 3.0RC1 has a bug...
Now, the bug is fixed in the branch, and 3.0RC2 will be able to do the below:
(mind the .. ranges)
PCellProps((TFpList((StringGrid1.FGrid.FCellArr.FCols.FList)^[0..6]).FList)^[0..5])^.Text
This returns an: Array[column] of Array[row] of pchar.
- 6 columns
- 5 rows in each column
The watches window, allows to browse them, as shown in the image.
Empty cells, return an error (for their array entry), because the grid has a nil value in the pointer to their date (and nil dereference is an error).
Data used:
StringGrid1.Cells[1,1]:='Column:1 Row: 1';
StringGrid1.Cells[1,2]:='Column:1 Row: 2';
StringGrid1.Cells[2,1]:='Column:2 Row: 1';
Of course you can replace the "5" in "0..5" with "StringGrid1.FRows.FCount". And do similar for the column count.
But mind, that this means a grid with 1000 rows will have the debugger evaluate them all.