Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / DBGridEh + FibPlus сортировка. / 7 сообщений из 7, страница 1 из 1
25.01.2013, 20:30
    #38125329
rpalaznik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh + FibPlus сортировка.
Добрый день, столкнулся с проблемой, которую постараюсь объяснить ниже.
Программа отображает, с помощью DBGridEh и FIBPlus компонентов, порядка 200-300 записей одновременно, записи отсортированы по дате и разброс дат порядка нескольких месяцев. Иногда возникает необходимость изменить даты нескольких записей расположенных рядом (с одной датой) и при изменении даты первой записи, фокус грида улетает за ней, чтобы вернуться обратно, к другой записи, приходится крутить скролл и искать нужную запись. Таким образом, при большом количестве изменений, нервы пользователей не выдерживают и они впадают в депрессию, обзывают программу нехорошими словами и несут негатив в этот мир.
Так вот, чтобы им помочь и поберечь этих ранимых созданий необходимо чтобы грид не дергался ни куда и сохранял всегда одно положение, пока его не попросят с помощью того же скролла. Я решал эту проблему с помощью букмарков, сохранял букмарк следующей записи и при применении изменений переходил к нему. Но из этого способа вытекает 2 маленьких проблемы - после изменений записи фокус смещался на следующую запись независимо от того было произведено изменение поля включенного в сортировку или нет. И было недоумение, когда изменял запись, вот она, а фокус на следующей... Вторая проблема - неясным и случайным образом без возможности повторения в процессе отладки - после изменения записи фокус улетал в саааамый верх грида.
Так вот собственно вопрос, кто-нибудь грамотно реализовывал поведение грида или датасета, при котором он ни куда самостоятельно не улетает или может быть где-нибудь в закрамах настроек маячит столь желанная опция, которая решает все мои и пользователей проблемы?
...
Рейтинг: 0 / 0
25.01.2013, 21:45
    #38125373
дельфисты
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh + FibPlus сортировка.
Это наверное дельфисты лучше расскажут, они больше используют VCL, FibPlus и Ehlib.
Ради эксперимента поищите у FibPlus(DataSet) и Ehlib параметры со словом Refresh и по отключайте их все.
Сортировку делаете через SQL ORDER BY или средствами Ehlib кликом по имени колонки или по этому клику и происходит очередной запрос с ORDER BY?
...
Рейтинг: 0 / 0
25.01.2013, 21:51
    #38125378
rpalaznik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh + FibPlus сортировка.
Refresh поищу, сортировка делается локально средствами FIBPlus
...
Рейтинг: 0 / 0
25.01.2013, 21:55
    #38125383
дельфисты
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh + FibPlus сортировка.
rpalaznikRefresh поищу, сортировка делается локально средствами FIBPlus
Если бы делали сортировку через SQL ORDER BY или по клику в DBGridEh с запросом с ORDER BY, то все просто, только после коммита и рефреша DataSet-ом данные пересортируются.
...
Рейтинг: 0 / 0
26.01.2013, 04:58
    #38125531
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh + FibPlus сортировка.
rpalaznik, с обычным StringGrid делал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        // Запоминаем текущую строку
        int current_row=StringGrid2->Row;

        //Изменяем запись
        ...

        // Обновляем StringGrid
        ...

        // Восстанавливаем строку
        StringGrid2->Row=current_row;

у DBGrid должно быть что-то похожее на свойство Row
...
Рейтинг: 0 / 0
03.02.2013, 23:07
    #38135515
rpalaznik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh + FibPlus сортировка.
m_Slarpalaznik, с обычным StringGrid делал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        // Запоминаем текущую строку
        int current_row=StringGrid2->Row;

        //Изменяем запись
        ...

        // Обновляем StringGrid
        ...

        // Восстанавливаем строку
        StringGrid2->Row=current_row;

у DBGrid должно быть что-то похожее на свойство Row

У DBGrid есть такой механизм, с помощью букмарков можно сделать сохранение текущей записи, но в таком случае, при возврате к этой записи грид может переместиться, если поле сортировки будет изменено, а как раз этого и нужно избежать.
...
Рейтинг: 0 / 0
04.02.2013, 06:13
    #38135638
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGridEh + FibPlus сортировка.
rpalaznikm_Sla...у DBGrid должно быть что-то похожее на свойство RowУ DBGrid есть такой механизм, с помощью букмарков можно сделать сохранение текущей записи, но в таком случае, при возврате к этой записи грид может переместиться, если поле сортировки будет изменено, а как раз этого и нужно избежать.Делай сохранение не текущей, а следующей за ней записи.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / DBGridEh + FibPlus сортировка. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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