If you have signal all changes (auto mode) then the system will treat each cell as if they were their own control thus if you have On focus events being signaled then you will get a signal when entering any cell regardless of how you got there. If you don't have Signal all changes then you will only get a on focus event when the grid itself is entered regardless of which cell.
There is no real way to determine if the focus but there is a kludge that might get you want you want.
In the Onfocus event for the grid check the value in MSE(25,2) which should have the binary value of the last control with focus. If it is not the Grid's CTL id then you can from an external control however you will need to force a reset of this value by then issuing a SET_FOCUS 0. Nomads when it finds focus is on 0 (the window itself) will force focus back to the Grid so when you next check MSE(25,2) the last control to lose focus will now be the grid itself.
Something like this:
x=dec(mid(mse,25,2)); if x<>id then set_focus 0 else (change of cell focus event)
As I said -- its a kludge but might provide what you need.