|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.01.2015, 10:34 | #1 |
Новичок
Джуниор
Регистрация: 14.01.2015
Сообщений: 3
|
Сортировка в ClientDataSet как в проводнике
Нужно сделать сортировку в ClientDataSet по текстовому полю как в проводнике(что бы строка '2' шла до '10'). Я так понимаю можно использовать для сравнения строк функцию StrCmpLogicalW. Хотелось бы узнать как можно в ClientDataSet вручную поменять порядок следования записей.
|
14.01.2015, 10:49 | #2 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
14.01.2015, 12:24 | #3 |
Новичок
Джуниор
Регистрация: 14.01.2015
Сообщений: 3
|
Значит надо сделать дополнительное поле в DataSet, скажем SortIndex, которое не будем показывать в таблице, и при заполнении DataSet пройтись по записям и выставить каждой свое число в поле SortIndex, затем при нажатии на заголовок в таблице сделать сортировку по полю SortIndex?
|
14.01.2015, 12:32 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Если к базе не привязан ClientDataSet, то можно и так
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
16.01.2015, 17:23 | #5 |
Новичок
Джуниор
Регистрация: 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, то есть как то перехватить этот момент? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |