| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Сортировка в CListCtrl |
| Автор: kometa_triatlon 2.6.2005, 03:02 |
| Часто встречается такая фишка: рядом с названием одной из колонок CListCtrl ( стиль report ) есть небольшой треугольник. Нажатие на хидер устанавливает сортировку списка по этому полю, повторное нажатие меняет направление сортировки. Ну вы поняли о чем я. Как это сделать? Есть стандартные функции или нужно ловить событие нажатия на заголовок и писать свою функцию сортировки? Может есть у кого пример кода? |
| Автор: kometa_triatlon 2.6.2005, 04:57 |
| Кое-что нашел в rsdn... Но остается два вопроса. Как узнать, на хидер какого столбца нажали? И как вывести треугольник? |
| Автор: Lion 2.6.2005, 09:13 |
| Вкратце: 1. Обрабатывается сообщение LVN_COLUMNCLICK списка. Там приходит структура, в которой есть индекс столбца. 2. Значок рисуешь сам , подставляя изображение с прозрачным фоном в CHeaderCtrl списка. 3. Еще надо написать CALLBACK функции сравнения строк списка. Код есть, но он в проекте. Пример могу написать, к вечеру. Если сильно надо, обращайтесь. |
| Автор: kometa_triatlon 2.6.2005, 12:30 | ||||
| Сильно надо!!! Первый раз работаю с CListCtrl, нужен пример. Ну план понятен, но реализовать я его не смогу
Название поля узнаю методом тыка
А вот здесь не понял. Точнее понял, но не знаю как сделать... |
| Автор: Lion 2.6.2005, 14:07 |
| Завтра с утра. |
| Автор: kometa_triatlon 2.6.2005, 23:45 |
| Завтра с утра я уже сдам прогу... Ну все равно, хоть научусь. |
| Автор: St. Andrew 3.6.2005, 01:39 |
| kometa_triatlon, а можешь примерчик выложить? А то мы сегодня полдня пытались заставить работать CListCtrl и ничего в него толком не вывелось... |
| Автор: Lion 3.6.2005, 06:25 | ||
Ну блин Семен Семеныч, где ж ты раньше был. Файл прилагаю. Там в общем не все так просто. P.S. Код сильно не пинать. |
| Автор: kometa_triatlon 3.6.2005, 06:47 |
| St. Andrew Нетрудно Lion Ну ты все равно успел |
| Автор: Lion 3.6.2005, 06:49 | ||
Буду следить за форумом, если что не понятно пиши (можешь прям с кусками кода). |
| Автор: kometa_triatlon 3.6.2005, 06:59 |
| Мыло только что отправил, пример посмотрел, понравилось Всем спасибо |
| Автор: St. Andrew 3.6.2005, 16:07 |
| kometa_triatlon, Большое спасибо! |
| Автор: kometa_triatlon 4.6.2005, 23:11 | ||||
| Самое грустное, это то, что у меня это код не заработал Пример работает нормально, но как только перенес код, сортировка кончилась Следствие показало, что проблема здесь:
Обе строки принимают одно значение (если конкретнее - текст первого элемента списка) Не понимаю...
|
| Автор: Lion 6.6.2005, 04:55 |
| Сори был в offline. Ты при заполнении списка делаешь SetItemData(…)? Если нет, то у тебя для всех Item в функцию сортировки приходят нули, автоматически подставленные при добавлении Item-ов. Посмотри функцию FillList() в примере. |