Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
1-52897
race1
2003-02-08 10:58
2003.02.17
простой вопрос


7-53300
SZap
2002-12-13 14:00
2003.02.17
Параметры HDD


3-52729
cta
2003-01-30 08:47
2003.02.17
работа с датами


1-53066
Шоломицкий
2003-02-06 18:37
2003.02.17
Проблема с регионами!(


3-52804
vikser
2003-01-31 17:02
2003.02.17
Консольное приложение и DataModule с ADO????




   Наверх