Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.02 c
14-53176
dimich1978
2003-01-31 10:59
2003.02.17
ПЕНСИОННЫЙ ФОНД ПОД ВИНДУ и FREEWARE


1-52824
Hoper
2003-01-27 14:36
2003.02.17
Как узнать, имеет ли класс или компонент какое-либо св-во


14-53283
Шишкин Илья
2003-02-02 11:39
2003.02.17
Кто-нибудь знает ссылку, где можно увидеть свой IP?


7-53294
Dmitrii
2002-12-16 14:31
2003.02.17
Программирование COM порта


1-53063
AlexT1000
2003-02-05 15:25
2003.02.17
Помогите периписать маааленький кусочек на асме.