Hi, Mark!
I see some ways - but all are a little bit expensive:
1. Use the normal VFP grid.
In this case you have to transform the data into a cursor which has the wished presentation structure.
If you deal with buffering, you can use GetNextModified & GetFldState to find out the changed data and beam them back into the originla table
2. Use any other ActiveX grid control.
Here you have to move the data into the grid and move changed data back to the table using some changed events of the grid control.
3. Build your own Grid using textboxes.
To go this way move the values from the table to properties of one ore more objects and use them as controlsoure for a matrix of textboxes.
You can deal with interactivechange events or with self defined acces methods to get events if any value is changed!
SeBaFlu