Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2015, 10:34   #1
Antrawasko
Новичок
Джуниор
 
Регистрация: 14.01.2015
Сообщений: 3
Вопрос Сортировка в ClientDataSet как в проводнике

Нужно сделать сортировку в ClientDataSet по текстовому полю как в проводнике(что бы строка '2' шла до '10'). Я так понимаю можно использовать для сравнения строк функцию StrCmpLogicalW. Хотелось бы узнать как можно в ClientDataSet вручную поменять порядок следования записей.
Antrawasko вне форума Ответить с цитированием
Старый 14.01.2015, 10:49   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Хотелось бы узнать как можно в ClientDataSet вручную поменять порядок следования записей
Ни как. В запросе делать вычисляемое поле с выкрутасами и по нем или сортировка в запросе, или индекс в датасете. Вычисляемое поле в датасете не поможет - по нем индекс не создать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2015, 12:24   #3
Antrawasko
Новичок
Джуниор
 
Регистрация: 14.01.2015
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ни как. В запросе делать вычисляемое поле с выкрутасами и по нем или сортировка в запросе, или индекс в датасете. Вычисляемое поле в датасете не поможет - по нем индекс не создать
Значит надо сделать дополнительное поле в DataSet, скажем SortIndex, которое не будем показывать в таблице, и при заполнении DataSet пройтись по записям и выставить каждой свое число в поле SortIndex, затем при нажатии на заголовок в таблице сделать сортировку по полю SortIndex?
Antrawasko вне форума Ответить с цитированием
Старый 14.01.2015, 12:32   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если к базе не привязан ClientDataSet, то можно и так
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.01.2015, 17:23   #5
Antrawasko
Новичок
Джуниор
 
Регистрация: 14.01.2015
Сообщений: 3
По умолчанию

Сортировку нужно было изменить только в 1ом столбце. Написал в событии TitleBtnClick в DBGridEh следующее:

if ACol=0 then begin
MyGrid.SortLocal:=false;
if Column.Title.SortMarker=smUpEh then
ClientDataSet1.IndexName:='SortInde x DESC'
else
ClientDataSet1.IndexName:='SortInde x';
end else
MyGrid.SortLocal:=true;

Все работает как надо, кроме одного - мультисортировки по нескольким столбцам(через CTRL): это и по коду видно что, если нажать на сортировку другого столбца 2ым и так далее, то 1ый сортируется по старому, а если нажать 2ым и далее на 1ый, то он сортируется игнорируя другие столбцы. Мультисортировка организуется с помощью SortLocal и EhLibCDS автоматически. Есть идеи,как организовать мультисортировку с участием 1ого столбца? Необходимо будет отказаться от автоматической сортировки, отключив SortLocal и организовывать самому? Или как то можно, не отключая SortLocal, отсортировать 1ый столбец после того как его отсортирует EhLibCDS, то есть как то перехватить этот момент?
Antrawasko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ClientDataSet сортировка bilibian Общие вопросы Delphi 11 26.08.2014 15:10
Сортировка как в Windows-проводнике Скрипт Microsoft Office Excel 13 29.10.2013 19:29
сортировка индексами в Clientdataset iliili БД в Delphi 2 08.05.2011 20:41
Дерево как в проводнике, реестре Valdis Общие вопросы Delphi 1 04.10.2007 00:02