Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.17;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
7-53316
der
2002-12-15 17:24
2003.02.17
shift+page_down в dbgrid


14-53212
DiamondShark
2003-01-31 15:39
2003.02.17
Тут как-то о медальках говорили...


6-53137
BJValentine
2002-12-25 18:48
2003.02.17
Как можно прозвонить сетку?


7-53291
SERGGL
2002-12-16 12:16
2003.02.17
обращение к сегменту кода под виндой


1-53062
Jaxtor
2003-02-06 17:27
2003.02.17
TStringList





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский