Bernie,
Helpful hints:
The fmt$ control property allows you to set the columns format from post display. Instructions under grid control
Much easier to maintain or make dynamic, especially remotely.
Set properties using the propbag or Pseudo Multi-Properties control properties
(grd'row.colno.value.$="1,1,""Action"","
This reduces your response time tremendously.
Please do not torment yourself trying to deal with cell data. All I/O is best done by row, same as reading a record.
Loading is much faster by entire grid. Faster to set colors etc after the Data load than mixed in by row.
Control Property LoadIOList$ allows you to get the grids Iolist
gridIOL$=grd'LoadIOList$
Control Property rowdata$ allows you to get the data in or out.
Get: READ DATA FROM grd'rowdata$,SEP=gFDlm$ TO IOL=gridIOL$,ERR=*NEXT
Put: grd'rowdata$=REC(gridIOL$,SEP=gFDlm$)
Control Property Currentrow is not row, they are unrelated.
The first is for focus position, the second is for update position. Focus doesn't change update position.
Ditto with column.
Nomads has generic variables for controls including grids (See Object Nomads)
This makes generic code much easier.
id.row for row.
id for current control object.
id$ for current control name.