Bob,
There is only one "real" control for each column and it's in the ActiveRow, the other rows are just "painted images" of the control.
If you have the cbo RowSource=thisform.maMachineTypes, RowSourceType=array, BoundColumn=2, BoundTo = .t., ControlSource=table.field it should work just fine. I'm not sure what you are doing with the calculated field, you can always just make that a column of a view that you use for the grid.
The BeforeRowChange and AfterRowChange can be used to detect a row change.
>The Column.Sparse property is already .f.. The object's underlying data is fine,
>in other words, if I add the fields from the grid's table, they show up.
>
>There is object.init code that tries to make a combo box using a global array and the table's field, for instance there is a global array of machine types (injection,01, extrusion,02,blow molding,03,...) and the field is say '01' in the first record and '02' in the second.
>
>In the first row of the grid, Injection shows up. But also for the second and so on. Yet, if I display the field machine type, it shows properly.
>
>The question, then, is: Is the object initialized in each row? If not, what method occurs for each row? Refresh is not it (tried it). I've tried all the ones that seem to make sense.