Предположим, что я показываю цены на акции, спортивные результаты или посещаемость фильмов или что-то в этом роде.Как выделить измененные ячейки при обновлении DBgrid?
Периодически я обновляю сетку с помощью Close(), а затем Open() запроса, связанного с его ассоциированным источником данных.
Я знаю, как владельцу нарисовать ячейку с помощью OnDrawCell() - что я не могу понять, так это узнать, совпадает ли новое значение с предыдущим значением для данной ячейки.
Я предполагаю, что здесь есть два случая использования: один, где число строк фиксировано, и они остаются в том же порядке строк, а также в тех случаях, когда строки могут меняться (вставлять/удалять или изменять порядок).
Для первого я могу сделать снимокшотов перед обновлением и сравнением после обновления, но это может быть много данных. Я не уверен, хочу ли я ограничить операцию видимыми в настоящее время строками. Я думаю, что пользователь может захотеть прокрутить вниз и все равно получать уведомления обо всех изменениях, которые были изменены во время последнего обновления.
Для последнего я в тупике, если, конечно, каждая строка не имеет уникального ключа.
Как я могу это сделать (эффективно)? Решение для TDbGrid помогло бы всем, решение с TAdvDbGrid TMS Software было бы в порядке у меня (как и (предпочтительно свободный) сторонний компонент).
Если этот DBGrid предназначен только для отображения данных, вы можете либо кэшировать предыдущие данные, либо сравнивать их с новыми извлеченными записями, либо вы можете сделать запрос, содержащий как текущие, так и предыдущие значения данных, которые вы хотите отслеживать. Таким образом, легко сравнивать значения и соответственно менять цвет. – LightBulb