What if you are "mousing in" from outside of the dbGrid? I haven't tested, but it is possible the actual focus change is after the mouse_down.
The thing I would worry about is mousing to a form outside the grid, then mousing back into the grid to a different line.
I've always used item_change for this type of code. You can determine using base and the number of cols whether the new is a different line, then can check should save to see if something else has not already performed the save.