powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Прокрутка TDBGrid
11 сообщений из 11, страница 1 из 1
Прокрутка TDBGrid
    #39952453
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда TDBGrid прокручивается колесом мыши, то сначала курсор доходит до последней (первой) видимой записи, после этого начинают прокручиваться записи в гриде.

Вопрос: можно ли как-то сделать так, чтобы записи начинали прокручиваться чуть раньше, например когда до конца видимого списка осталось 3 строки?
...
Рейтинг: 0 / 0
Прокрутка TDBGrid
    #39952469
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделать свой собствееный DBGrid. Или поискать сторонние. Может где-то уже сделано.
...
Рейтинг: 0 / 0
Прокрутка TDBGrid
    #39952483
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener
Сделать свой собствееный DBGrid. Или поискать сторонние. Может где-то уже сделано.

Понятно что сделать собственный, просто возможно кто-то уже делал такое и знает где что можно подкрутить.
...
Рейтинг: 0 / 0
Прокрутка TDBGrid
    #39952741
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp
northener
Сделать свой собствееный DBGrid. Или поискать сторонние. Может где-то уже сделано.

Понятно что сделать собственный, просто возможно кто-то уже делал такое и знает где что можно подкрутить.


Сделать наследника от TDBGrid и открыть Protected свойства TopRow и VisibleRowCount. В методе OnMouseWheelDown (OnMouseWheelUp) определять, находится ли текущая запись на последних нескольких видимых строках DBGrid. Если так, выполнить метод ScrollBy (ScrollData), а затем, на столько же записей выполнить TDataSet.Prior для датасета, привязанного к DBGrid.
Тут, главное, никак не использовать TDataSet.AfterScroll для определения, находится ли текущая запись в последних видимых, точнее определять то можно, только вот нельзя воспользоваться TDataSet.Prior.
...
Рейтинг: 0 / 0
Прокрутка TDBGrid
    #39952763
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belotsky Serge
alekcvp
пропущено...

Понятно что сделать собственный, просто возможно кто-то уже делал такое и знает где что можно подкрутить.


Сделать наследника от TDBGrid и открыть Protected свойства TopRow и VisibleRowCount. В методе OnMouseWheelDown (OnMouseWheelUp) определять, находится ли текущая запись на последних нескольких видимых строках DBGrid. Если так, выполнить метод ScrollBy (ScrollData), а затем, на столько же записей выполнить TDataSet.Prior для датасета, привязанного к DBGrid.
Тут, главное, никак не использовать TDataSet.AfterScroll для определения, находится ли текущая запись в последних видимых, точнее определять то можно, только вот нельзя воспользоваться TDataSet.Prior.

Как всё просто... А кто наследника датасета будет пилить, который умеет отдавать не текущую строку, а любую?
...
Рейтинг: 0 / 0
Прокрутка TDBGrid
    #39952779
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
. А кто наследника датасета будет пилить, который умеет отдавать не текущую строку, а любую?
Зачем? Сам грид должен бегать по датасету. Он и сейчас бегает. Тебя же не удивляет, что в гриде отображаются несколько записей, а активная только одна
...
Рейтинг: 0 / 0
Прокрутка TDBGrid
    #39952782
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
wadman
. А кто наследника датасета будет пилить, который умеет отдавать не текущую строку, а любую?
Зачем? Сам грид должен бегать по датасету. Он и сейчас бегает. Тебя же не удивляет, что в гриде отображаются несколько записей, а активная только одна

Чтобы добавить в механизм буферизации опережение.
...
Рейтинг: 0 / 0
Прокрутка TDBGrid
    #39952787
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
Когда TDBGrid прокручивается колесом мыши, то сначала курсор доходит до последней (первой) видимой записи, после этого начинают прокручиваться записи в гриде.

Вопрос: можно ли как-то сделать так, чтобы записи начинали прокручиваться чуть раньше, например когда до конца видимого списка осталось 3 строки?


Все же со стандартным поведение лучше не играться
Что-то типа с этим поиграться
Код: pascal
1.
2.
3.
with TGridCracker(Grid) do begin
...
 if VisibleRowCount - Row <=3 then Scroll(#нужное значение#)


...
Рейтинг: 0 / 0
Прокрутка TDBGrid
    #39953011
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
Чтобы добавить в механизм буферизации опережение.
Она и так есть. Просто по умолчанию вытаскивается столько записей, сколько помещается в окно грида
...
Рейтинг: 0 / 0
Прокрутка TDBGrid
    #39953053
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
wadman
Чтобы добавить в механизм буферизации опережение.
Она и так есть. Просто по умолчанию вытаскивается столько записей, сколько помещается в окно грида

Понятно. Про опережение не вычитал. С датасетом - аналогично.
...
Рейтинг: 0 / 0
Прокрутка TDBGrid
    #39953146
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот странно что до сих пор никто не спросил ТС нафига! Нафига ему нужно именно такое поведение DBGrid'a при скролле мышкой? Чем его не устраивает то что есть сейчас?
Вот лично меня всё устраивает при скролле мышкой DBGrid'a начиная с BDS, когда наконец-таки DBGrid начал правильно реагировать на такой скролл.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Прокрутка TDBGrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]