stringgrid1.Row:=1;
stringgrid1.Col:=3;
stringgrid1.SetFocus;
Actually these 3 lines above worked as they should be. But you forgot to think, that after the stringgrid process the OnEditingDone event, the stringgrid will also reposition the active cell immediately depends on user input. For example user done the editing by pressing Enter or arrow down key. So your code for moving the cell to the desired location should be process after a short delay after OnEditingDone event. That's why I use a TTimer.