![]() |
|
|
![]()
|
|
| T1000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 18.1.2007 Репутация: нет Всего: нет |
Здравствуйте. У меня проблема - неправильно работает вертикальный скроллинг у DBGrid.
Предисловие: работаю с dbf-файлами на Advantage Database Server. Для доступа к базе в Делфи (6ой) использую ADSConnection ADSTable DataSource DBGrid. Кол-во записей в базе порядка 2500. Проблема: У верт. скроллбара всего три положения - вверху, в центре, внизу. И все! При перемещении по записям скроллер всегда находится в серединке. Как только достигаю конечной записи, скроллер становится внизу. Как только достигаю нулевой записи, скроллер становится вверху. Помогите, товарищи, кто сталкивался. Надеюсь понятно объяснил. P.S. пробовал через ADO подконнектиться к базе access. При этом в DBGrid нормально работает скролл. Это сообщение отредактировал(а) T1000 - 18.1.2007, 18:49 |
|||
|
||||
| dimazu |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 4.3.2006 Репутация: 1 Всего: 5 |
Поведение скрола зависит от датасета/базы (TDataset.IsSequenced=True)
Если у тебя ADO/BDE.Paradox, то датасет знает recordcount (считываются ВСЕ записи и скрол будет плавным), а если BDE.DBase/Oracle/MS SQL/InterBase и т.д. - то нет (считываются только те, что будут показаны на экране).
Это сообщение отредактировал(а) dimazu - 18.1.2007, 20:52 |
|||
|
||||
| T1000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 18.1.2007 Репутация: нет Всего: нет |
Базы клиперовские. Так как же мне быть?
|
|||
|
||||
| dimazu |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 4.3.2006 Репутация: 1 Всего: 5 |
Используй сторонние компоненты или напиши наследника TTable. (ТМемTable)
ЗЫ. Или конвертни в Парадокс, там все работает... Это сообщение отредактировал(а) dimazu - 18.1.2007, 23:06 |
|||
|
||||
| Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Самый простой способ взять DBGridEh из библиотеки EhLib, до версии 4 бесплатный вот ссылка.
-------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
| SergeBS |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
dimazu,
А если посмотреть исходники, то выяснится: скролл имеет только 3 положения на любой индексированной таблице. В том числе и парадоксовой. Если же подправить чуть исходники, то будет работать как на Парадоксе на любых НЕиндексированных таблицах. Но не в дизайнере, только в ран-тайм. |
|||
|
||||
| T1000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 18.1.2007 Репутация: нет Всего: нет |
Ребята, спасибо вам за ответы! Я не такой матёрый делфист как вы. Расскажите, что подправить в исходниках?
А DBGridEh обязательно попробую. Это сообщение отредактировал(а) T1000 - 19.1.2007, 17:41 |
|||
|
||||
| SergeBS |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
DBTables.pas
Примерно так |
|||
|
||||
| dimazu |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 4.3.2006 Репутация: 1 Всего: 5 |
Можно и так.
Но, ИМХО, работать правильно все равно не будет. Paradox и dBase не одно и тоже. Я думаю, что при движении по одной записи (Next/Prior) (Up/Down кнопки у скрола) и PgUp/PgDn работать как-то будет (причем при первом нажатии, по логике, должен быть прыжок вниз на кол-во видимых записей в гриде), а при переходе на заданный номер за пределами видимых в гриде записей (GoTo (RecNo)) - работать не будет. Для проверки, надо зацепить ползунок у скрола и попробовать подвигать вверх вниз. Мне кажется, что перехода на другую запись, кроме первой и последней быть не должно. T.е. будет практически тоже самое, что и до изменений... Все относится к dBase only (с Paradox-ом и так работает без проблем)... ЗЫ. Если так, то может лучше все-таки прикрутить самостоятельный ScrollBar к DBGrid и работать с ним? Типа вот так:
Это сообщение отредактировал(а) dimazu - 20.1.2007, 18:53 |
|||
|
||||
| SergeBS |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
dimazu,
А ты попробуй. Я с Парадоксом уж лет 7 точно не работаю. |
|||
|
||||
| T1000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 18.1.2007 Репутация: нет Всего: нет |
Проблема решилась в полной (для меня) мере. У объекта adsTable есть свойство Sequenced. Устанавливаю true и вертикальный скролл начинает нормально работать.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |