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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2012, 09:35   #1
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию Сортировка в TListView (OwnerData=true)

Как можно реализовать сортировку данных в компоненте TListView щелчком по столбцу, например, как это реализовано в том же uTorrent:
1.png
И будет ли разница в реализации для виртуального режима отображения?
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 14.01.2012, 12:43   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для не виртуального SortType и OnCompare.
Для виртуального менять сортировку в источнике данных для ListView и выполнить ListView.Repaint.
В обоих случаях ColumnClick=True и обработка в OnColumnClick. В Caption колонки можно режим сортировки показывать. Смайлик там тоже вроде можно показать используя ImageIndex
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2012, 15:22   #3
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Ок, это понятно. А как они добиваются этой стрелочки направляющей сортировки по середине на нажатой колонке (на скриншоте видно)?
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 14.01.2012, 16:01   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Может глянуть в сторону OnCustomDrawItem и OnCustomDrawSubItem?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2012, 19:07   #5
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Имеете в виду самому прорисовывать стрелочку на колонке?
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 14.01.2012, 20:20   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В общем да. В Д7 ListView не имеет таких возможностей, может у последних версиях есть. Можно и в API покапаться, а вдруг? Возможно у uTorrent используется shell folder, внешне очень похоже.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.01.2012, 14:38   #7
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Есть в классе TStringList метод CustomSort(Compare:TStringListSortC ompare) Проблема в том, что данная процедура сортирует параметры попарно за 1 вызов. Т.е. глобальная сортировка списка не выполняется. Как преодолеть это препятствие? Писать собственную сортировку с параметрами?
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать автоскроллинг в ListView при OwnerData=true 3D Hunter Общие вопросы Delphi 3 08.12.2011 16:29
Tlistview NEoMASTERR Общие вопросы Delphi 1 01.12.2011 04:04
Как перемещать itemы в Listivew (vsReport) с ownerdata=true? Anfall Компоненты Delphi 12 25.08.2011 19:24
Как узнать индексы выделенных итемов в ListView при OwnerData? 3D Hunter Общие вопросы Delphi 3 02.10.2009 10:24
Инициализация TListView Oburec Компоненты Delphi 0 04.05.2009 00:30