![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить доступ к текущей записи в ADODataSet?
leklerk © (2012-04-27 13:38:00)Добрый день. Подскажите пожалуйста, как получить доступ к текущей записи в ADODataSet? Мне нужно, чтобы при двойном щелчке по текущей записи, она бы окрашивалась в другой цвет.
Ega23 (2012-04-29 08:45:00) [1]
> 1. Создать список указателей на записи (идеально - в качестве
> указателей использовать UID записей), куда заносить UID
> "щелкнутой" записи если его там нет и наоборот - удалять
> его, если он там был. После этого вызывать Validate для
> грида.
> 2. В том же OnDrawColumnCell "вытаскивать" UID отрисовываемой
> записи и искать его в вышеупомянутом списке. Если найден,
> то выделять запись (при этом выделение должно выглядеть
> иначе чтобы не терялась ТЕКУЩАЯ строчка сетки, например
> в спец.колонке рисовать/не рисовать птичку)
> 3. Над отобранными записями можно выполнять групповые операции
> - при этом сканирование (перебор) отобранных записей делать
> через просмотр списка в цикле с поиском ее в НД по Locate.
>
Это для мазохистов. Для нормальных человеков у DBGrid есть свойство SelectedRows
MsGuns (2012-04-28 10:23:00) [2]"Отбор" и "выделение" записей в гриде - суть две разные разницы.
Про "выделение" тут уже говорили, если надо как-то особенно (в серых яблоках, в крапинку или еще как), то OnDrawColumnCell и бубен в руки.
Если "отбор", то тут либо качать гриды, "умеющие" это делать, либо самомстоятельно ручками. При этом алгоритм достаточно прост:
1. Создать список указателей на записи (идеально - в качестве указателей использовать UID записей), куда заносить UID "щелкнутой" записи если его там нет и наоборот - удалять его, если он там был. После этого вызывать Validate для грида.
2. В том же OnDrawColumnCell "вытаскивать" UID отрисовываемой записи и искать его в вышеупомянутом списке. Если найден, то выделять запись (при этом выделение должно выглядеть иначе чтобы не терялась ТЕКУЩАЯ строчка сетки, например в спец.колонке рисовать/не рисовать птичку)
3. Над отобранными записями можно выполнять групповые операции - при этом сканирование (перебор) отобранных записей делать через просмотр списка в цикле с поиском ее в НД по Locate.
Медвежонок Пятачок (2012-04-27 14:15:00) [3]так все верно.
когда нужны данные, - они лезут смотреть свойства грида.
а когда нужно раскрассить строки - лезут в датасет.
логично.
Плохиш (2012-04-27 14:13:00) [4]Посмотрел на свойства и события ADODataSet-а и не увидел ни свойства Color, ни событий от нажатия кнопок :-( может не туда смотрел?
Медвежонок Пятачок (2012-04-27 14:08:00) [5]текущая и так окрашена в другой цвет.
даже без щечка и двже если мышь вообще отключить и выбросить
leklerk (2012-04-27 14:05:00) [6]Но как эту задачу решить, есть способы? ("чтобы при двойном щелчке по текущей записи, она бы окрашивалась в другой цвет")
sniknik (2012-04-27 14:00:00) [7]это не текущая запись в ADODataSet, это выделенные... в гриде.
leklerk (2012-04-27 13:54:00) [8]Пользователь может выделить несколько, допустим 1-ю,3-ю и 8-ю. Потом нажимает кнопку и в них меняется значение.
Anatoly Podgoretsky (2012-04-27 13:50:00) [9]При выделение и так изменяется цвет строк.
Кстати и при двойном и при одинарном щелчке тоже