Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сортировать узлы в TreeView ? [Delphi, Windows]


finder2007 ©   (2007-03-20 01:37:00) 

Пытаюсь использовать метод SortData.
В TLESort(Sender: PControl; Data1, Data2: Pointer)
Data1 и Data2 -> nil.


finder2007   (2007-03-21 12:19:00) [1]

Все, спасибо - сортировка заработала.


mdw   (2007-03-20 23:29:00) [2]

P.S. Если подробнее нужно, пиши на мыло, отвечу, могу и с примером.
С форумом тех. проблемы есть, только вечером и только в общих чертах.:((


mdw   (2007-03-20 23:24:00) [3]


> Т.е если я сортирую по какой либо колонке, то сначала должен
> пройти все дерево и присвоить соответствующие данные?

В общем, ситуация такая, насколько помню.  TreeView сортируется двумя способами (см. MSDN) или по строкам в узле, но только одним способом, наверное по алфавиту. Мне было неинтересно, даже не смотрел. Или по данным, привязанным к узлу (свойство Data). В этом случае есть возможность сортировать произвольно. Соответственно в TLESort(Sender: PControl; Data1, Data2: Pointer) передаются Data двух узлов, которые сравниваются, а вернуть нужно 1 или 0 или -1, в зависимости что первее.
Если все данные лежат в дереве, а не привязаны к Data, то при заполнении можно в дата просто ложить хендл узла, а в TLESort обращаться к ним через Data1, Data2.
Да, автоматически TreeView не сортируется, поэтому в нужный момент нужно вызвать метод Sort.

> Кстати, вдогонку - почему-то не получается поставить пиктограммы
> на узлы. Делал вроде бы так же как в стандартном

Гм. Бикоз.
Отрисовка вся ручная, в стандартном сколько колонок? Одна? Ну и вот...
По умолчанию отображается текст, грубо говоря это аналог VCL-StringGrid, но строки являются узлами дерева. Если нужно что нарисовать то есть OnDraeCell.


finder2007   (2007-03-20 22:00:00) [4]

Кстати, вдогонку - почему-то не получается поставить пиктограммы на узлы. Делал вроде бы так же как в стандартном


finder2007   (2007-03-20 21:51:00) [5]

Т.е если я сортирую по какой либо колонке, то сначала должен пройти все дерево и присвоить соответствующие данные?


mdw   (2007-03-20 21:27:00) [6]

Отвечу завтра но мыло. Но на вскидку,  Data1, Data2 это данные привязанные к к узлам вы должны знать что там лежит, сравнить их и вернуть нужное значение. А что, я разьве в комментариях не написал как пользовать?


finder2007   (2007-03-20 16:23:00) [7]

Виноват: компонент - расширение стандартного TreeView - mdvTreeListEdit,
   property OnTLESort: TOnTLESort read GetOnTLESort write SetOnTLESort;
   // Вызывается при сортировке


Vladimir Kladov   (2007-03-20 15:47:00) [8]

Что за событие такое?


Наверх

Титульная страница Поиск, карта сайта Написать письмо