Текущий архив: 2003.02.17;
Скачать: CL | DM;
ВнизTDBGrid.SelectedRows Найти похожие ветки
← →
Андрю-ХА! (2003-01-30 18:12) [0]Не устраивает реализация TDBGrid.SelectedRows через TBookmark, т.к. после любого изменения порядка записей или их количества в DataSet (фильтр, индекс) bookmark"и указывают уже на другие записи.
Очевидно (или нет?), надо создать список значений ключевых полей, а потом по нему SetKey\GotoKey. Вот тут-то и возникает вопрос о правильной организации такого списка со временем поиска порядка как при использовании TBookmark. Поделитесь идеями.
← →
snake1977 (2003-01-31 08:38) [1]Я делал таким образом :
1. обрабатывал событие onKeyPress на гриде и по нажатию , например пробела, добавлял значение уникального поля для текущей записи в обычный TStringList, организованный естественно заранее.
2. на повторное нажатие клавиши соответственно убирал запись из списка
3. на событие onDrawColumnCell обрабатывал тек запись, если она примутствовала в списке, то рисовал соответственно другой фон записи, таким образом было видно какие записи выделены
4. по нажатию определенной кнопки устанавливал Filtered, для выбранного DataSet в true, а на событие для него OnFlterRecord делал проверку на наличие значения ключевого поля для записи, в списке выбранных, и при наличии ставил Accept в true
вот. если я правильно понял вопрос конечно :)
если хош могу выслать пример напиши на edge@emails.ru
← →
Андрю-ХА! (2003-01-31 10:55) [2]//snake1977 (31.01.03 08:38)
О! Через OnFlterRecord я еще не пробовал.
Правда пока вызывает опасение время выполнения фильтрации.....
Надо поэкспериментировать. Спасибо.
← →
BlackTiger (2003-01-31 11:45) [3]Хмммм...
Вообще-то, мультиселект сделан для цепочки действий "выбрал->выделил->обработал выделенное->забыл" и никаких промежуточных действий, результатом которых может быть изменение данных, вошедших в выделение.
Например, скопировать в записи буфер, подсчитать суммы по полям выделенных записей, заполнить поле выделенных записей одним значением (вот тут могут начаться чудеса - поле не должно входить в критерий выборки/сортировки).
А всякие извращения... Они на то и извращения, чтобы потреблять ресурсы.
← →
Андрю-ХА! (2003-01-31 14:55) [4]// ВСЕМ! ВСЕМ! ВСЕМ!
Результаты широкомасштабного тестирования показали, что использование вариантов
(а) TDBGrid.SelectedRows,
(б) TDataSet.OnFilterRecord и
(в) TMYDBGrid.SelectedRecords+TClientDataSet.SetKey\GotoKey
дает приблизительно одинаковые результаты по производительости.
PS C чем себя и поздравляю
Страницы: 1 вся ветка
Текущий архив: 2003.02.17;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.008 c