I have attached a sample project.
Essentially it has a StringGrid which has goRowSelect turn on and has a column which is updated by a Timer every second.
I am using BeginUpdate and EndUpdate inside the OnTimer event.
What seems to be happening is if you highlight a row and the timer updates the cells when the EndUpdate has finished the StringGrid row position goes back to the top of the grid,
rather than staying at the row you selected. If I then try and scroll down the stringgrid the position gets reset to the top again after the timer has finished.
If I comment out the BeginUpdate and EndUpdate this doesn't happen and the row selector stay at the last selected row rather than move to the top of the grid.
StringGrid.zip