TableControlQueryNextCurrentCellPosition will get called multiple times with different direction types depending on whether wrapping is enabled or not and the position the current cell is on.
Better is the MoveCurrentCellDirection event. It will get fired only once per cell move.
However, in 22.214.171.124 that event was not exposed. In 3.x we do now have a TableControlMoveCurrentCellDirection event where you have better control where to move the current cell.