Форум: "Базы";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];
ВнизНенормальный скролинг в DBGrid Найти похожие ветки
← →
cutter-pro (2002-08-30 12:55) [0]Delphi 6.0
При отображении в DBGrid таблицы Paradox скролинг работает нормально, т.е. регулятор перемещается синхронно с перемещением по записям.
Что касается таблицы dBASE, то здесь скролинг ведет себя совсем по другому - при переходе на вторую запись, регулятор сразу перемещается на середину полосы прокрутки и, далее, остается в этом положении до тех пор, пока не будет достигнута последняя запись.
Может кто-нибудь знает как с этим бороться?
P.S. Да и в случае с Paradox - в принципе тоже не все так идеально. При перемещении регулятора скролинга изображение перерисовывается не сразу, а после отпускания кнопки мыши.
НЕХОРОШО!:(
← →
Alexandr (2002-08-30 13:00) [1]DBGridEh
← →
MsGuns (2002-08-30 13:16) [2]Обрабатывай событие скроллинга
← →
cutter-pro (2002-08-30 14:51) [3]> Alexandr - Благодарю за помощь
> MsGuns - Багодарю за помощь, но мне не совсем понятно каким образом - в списке событий DBGrid wm_HScroll и wm_VScroll отсутствуют, да и для самого окна как такового - аналогично.
← →
koks (2002-08-30 14:52) [4]Проблема стара как Delphi....
Универсального решения нет.
Можно DBGridEh, можно исп. ADO. После множества экспериментов я на нее забил...
← →
cutter-pro (2002-08-30 16:22) [5]> Alexandr - только что установил DBGridEh - ситуация не изменилась. :(
← →
Prooksius (2002-08-30 16:31) [6]Правильно, поэтому я снес вертикальную полосу прокрутки в DBGridEh и залепил свою, обрабатывая самостоятельно скроллинг.
← →
cutter-pro (2002-08-30 16:45) [7]> Prooksius - Спасибо за совет - но я не понял - что значит залепил, ввиде чего, если конечно это не конфиденциальная информация?
← →
Desdechado (2002-08-30 17:02) [8]вообще-то такое поведение нормально. это связано с тем, что гриду не известно количество записей в подлежащем датасете. Поэтому только начало, середина и конец.
Скажете, что записи уже зафэтчены и их можно посчитать - но это дополнительные тормоза, особенно когда набор данных большой. Кроме того, при установке фильтра или OnFilterRecord вообще неизвестно, сколько записей будет удовлетворять фильтру без полного их перебора, а перебирать их без команды программиста или юзера (особенно если важна текущая позиция в датасете) программа не имеет права.
← →
cutter-pro (2002-08-30 17:35) [9]> Desdechado
Что значит зафытченные записи?
Почему количество записей неизвестно? По-крайней мере, при связывании DataSource напрямую с Table без фильтров и т.д. количество записей dBASE (*.dbf) находится в файле по абсолютному смещению 0004h.
Что Вы думаете по этому поводу?
← →
Desdechado (2002-08-31 16:20) [10]1. для доставания каждой записи из БД выполняется команда Fetch (это на уровне внутренностей БДЕ) - отсюда и термин.
2. это лишь частный случай, поскольку БДЕ обучен работать с любым сервером БД, для которого у него есть драйвер. Конкретика реализации для него не важна. А для большинства СУБД количество записей заранее в выборке неизвестна. И даже для DBF число записей, указанное тобой, слишком неустойчивая вещь в сети. Оно постоянно меняется, в него входят и удаленные записи (представь ситуацию - 10 млн удаленных и одна нормальная: как себя вести?). При открытии таблицы с одного рабочего места там одно число будет, а потом сосед добавил записи - оно другое. Ты записи видишь, а количество уже не совпадает.
← →
Prooksius (2002-08-31 20:25) [11]2 cutter-pro: Ну я имел ввиду, поставил на форму стандартный TScrollBar (или RX) и обрабатывал скроллинг с помощью него. А тот Vertical Scroll Bar, что был в TDBGridEx - убрал (благо, такая опция есть).
← →
cutter-pro (2002-09-02 10:22) [12]Мужики - ОГРОМНОЕ СПАСИБО! :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c