![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
при обновл. датасета оставить DBGrid в той же позиции скроллинга? [D7, XP]
ari_9 © (2007-10-28 12:10:00)использую QuantumGrid 6
на форме лежит cxGrid в котором отображаются данные запроса к БД. по некоторым действиям пользователя вне этого грида запрос обновляется. поставить после обновления курсор в гриде на ту же запись, что и была до - вопросов нет. но как сохранить ту же позицию окна скроллинга ?
допустим, запрос выдает 100 строк, в грид помещается 20. пользователь скроллингом "спустился" до просмотра записей с 80 по 100. но при этом курсор датасета остался на первой записи. потом происходит рефреш (по сути закрытие и открытие запроса). как перед этим зафиксировать состояние скроллбара cxGrid'а и потом установить его ?
ari_9 (2007-10-29 11:27:00) [21]Sergey13
да, я тоже смеялся, когда первый раз попробовал, но смех смехом, а чтобы избежать этого, приходится после получения эвента от бд откладывать обновление соответствующего датасета до тех пор, пока связанный с ним грид не перестанет получать сообщения от мыши. ужас 8-)
Правильный_Вася (2007-10-29 11:27:00) [22]Locate по первичному ключу в наборе данных
Sergey13 (2007-10-29 11:24:00) [23]> [1] ari_9 (28.10.07 14:05)
> то есть тащит пользователь "каретку "скроллбара, тут от
> БД пришло сообщение, данные обновились, но скроллбар уже
> не движется.
Ужос. Я бы убил программиста. 8-)
Ega23 (2007-10-29 11:22:00) [24]написать свой грид
ari_9 (2007-10-29 11:19:00) [25]ап
ну хорошо, допустим в случае QuantumGrid можно пользоваться Controller.TopRecordIndex, играясь как-то с тем, скроллит ли пользователь в данный момент грид или нет, скажем, при помощи того же GetCaptureControl. но как-то все это громоздко, да и в стандартном vcl гриде нет никакого TopRecordIndex
гугл нашел один топик на sql.ru, где автору внятного ответа не дали
не верю, что никто здесь не сталкивался с этой проблемой
ari_9 (2007-10-28 14:05:00) [26]если сделать
x := cxGridDBTableView.Controller.TopRecordIndex;
...
обновление данных
...
cxGridDBTableView.Controller.TopRecordIndex := x;
то позиция скроллбара сохраняется, но теряется флаг перемещения скролла ... то есть тащит пользователь "каретку "скроллбара, тут от БД пришло сообщение, данные обновились, но скроллбар уже не движется. придется ему снова мышкой кликать, что не есть хорошо ... а сообщения приходить будут часто