Просмотр позиции в DBGrid при прокрутке в Delphi - PullRequest
1 голос
/ 03 декабря 2008

У меня есть DBGrid на форме. DBGrid имеет много столбцов, поэтому отображается горизонтальная прокрутка. Я прокручиваю представление DBGrid вправо, чтобы увидеть больше столбцов. Если я выбираю строку, представление DBGrid автоматически сбрасывается для просмотра первого столбца (как будто я возвращаюсь в крайнее левое положение).

Есть ли способ предотвратить это?

Ответы [ 2 ]

7 голосов
/ 03 декабря 2008

Полагаю, у вас есть goRowSelect в параметрах сетки. Это заставляет выбранный столбец столбцов быть первым нефиксированным столбцом, поэтому всякий раз, когда строка изменяет код для прокрутки выбранной ячейки в поле зрения, первый нефиксированный столбец становится видимым.

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

2 голосов
/ 03 декабря 2008

Возможно, вы сможете запросить положение полосы прокрутки

GetScrollInfo(Self.Handle, SB_VERT, SIOld);

и используйте SetScrollInfo( ), чтобы вернуть его обратно. Там, наверное, лучший способ. SelectedField - это другой способ (получите / установите его по необходимости).

...