|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Сортировка в TreeView
Нужна помощь. Сразу скажу TreeView.SortType не предлагать - это не то. Мне надо: чтобы я мог выбрать по какому именно столбцу необходимо сортировать записи. Сортировка по типу:
1 2 3 4 5 6 7 8 9 а б в г д ... я желательно и латинские символы далее сортировать. Вообще замечательно если будет возможность сортировки в ту и обратную сторону |
#2
|
|||
|
|||
Не совсем понятно о каких столбцах речь. А вообще для сортировки надо обрабатывать событие TTreeView.OnCompare. В хелпе очень доступно изложено
|
#3
|
|||
|
|||
Поясняю.
Значит есть TreeView с стилем Report. К примеру имеется 7 столбцов (т.е. Columns.Count:=7). Необходима возможность сортировки всех записей (TreeView.Items) по типу: 1 2 3 4 5 .. 9 10 .. а б в г .. я Причём можно сортировать основываясь на одном из столбцов, на выбор |
#4
|
|||
|
|||
Ясно. Ты не о том классе говоришь. Я так понимаю ты имеешь в виду класс TListView.
Но повторюсь - для сортировки обрабатывай событие OnCompare. Это событие возникает:
Событие OnCompare сравнивает элементы списка, которые передаются как параметры Item1 и Item2. Если Item1 и Item2 равноценны в порядке сортировки, установить параметр Compare равным 0. Если Item1 меньше Item2 (в порядке сортировки) - установить Compare меньшим 0, если Item1 больше Item2 - установить Compare большим 0. Это из хелпа. По-моему все предельно ясно. Пример. Сортировка по алфавиту по столбцу ColNum. Код:
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin //ColNum - номер столбца, по которому производится сортировка if ColNum = 0 then Compare := AnsiCompareText (Item1.Caption,Item2.Caption) else Compare := AnsiCompareText(Item1.SubItems[ColNum-1],Item2.SubItems[ColNum-1]) end; Если нужен обратный порядок - просто умножай параметр Compare на -1 Для производства сортировки можно вызвать метод: Код:
ListView1.AlphaSort; |
#5
|
|||
|
|||
Блин, опечатку сделал, да это ListView.
Попробывал так как ты написал - всё работает! Причём так как мне надо! Спасибо! Очень помог! |