Полагаю, у вас есть goRowSelect в параметрах сетки. Это заставляет выбранный столбец столбцов быть первым нефиксированным столбцом, поэтому всякий раз, когда строка изменяет код для прокрутки выбранной ячейки в поле зрения, первый нефиксированный столбец становится видимым.
Поскольку goRowSelect также эффективно отключает горизонтальную прокрутку с помощью клавиатуры, я пытаюсь жить без нее. Вы можете использовать пользовательский чертеж ячеек сетки, чтобы показать все ячейки текущей строки с правильными цветами для выбранных ячеек, даже если на самом деле выбрана только одна ячейка. Я также использую это для отображения разных цветов в зависимости от того, сфокусирована ли сетка или нет, аналогично тому, что делает стандартный элемент управления дерева. Чтобы это работало должным образом, вам необходимо обрабатывать не только события навигации по ячейкам сетки, но и некоторые другие события, такие как OnEnter и OnExit сетки, OnActivate и OnDeactivate приложения и т. д.