![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сортировать узлы в 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]Что за событие такое?