| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > VirtualTreeView Ручная сортировка |
| Автор: CHERRY 4.5.2012, 15:29 | ||||
VirtualTreeView - типа файловый менеджер. Необходимо после заполнения сразу отсортировывать список. По клику на заголовках колонок сортировка работает отлично.
Повесил сортировку на кнопку
Не сортируется. Как сделать, чтобі список сортировался без клика по заголовку? |
| Автор: XperT 4.5.2012, 17:30 | ||||
Попробуйте так:
Если не поможет, значит что-то у вас не так, потому что у меня прекрасно сортирует используя такой код:
|
| Автор: CHERRY 4.5.2012, 21:43 | ||
| В том то и фишка, что что-то не так! Не работает ваш код. Я думаю, что конструкция
нужна, чтобы не возникало "лишнего" мерцания. TVirtualStringTree - богатый на различные настройки компонент. Возможно есть что-то типа VT.Options.Штучка, что решает проблему. Я найти такую штучку пока не смог. Поэтому и взываю к помощи. Найду сам решение - отпишусь. |
| Автор: CHERRY 4.5.2012, 22:02 | ||
| Причем, что интересно. Если кликом по хидеру отсортировать колонку в направлении sdDescending код
отсортировует колонку в соответствии со своим направлением(sdAscending). Естественно конструкции (VT.BeginUpdate; VT.EndUpdate;) не имеют значения. Т.е. сортировка VT.SortTree(0, sdAscending, true); работает, но не всегда. |
| Автор: XperT 4.5.2012, 22:22 |
| Есть предположение, что колонка, по которой идёт сортировка при клике на хидер отличается от 0. |
| Автор: CHERRY 6.5.2012, 19:20 |
| Нет, с колонками все в порядке. Но спасибо, мысль здравая. Я понял, что проблема в алгоритме сортировки, поскольку VTCompareNodes отрабатывает, но в зависимости от состояния списка(файлы-папки) есть неучтенные ситуации(папка-файл, файл-папка). Задача сортировки состоит в том, чтобы папки сортировались отдельно от файлов и находились всегда в начале списка, а файлы сортировались сами по себе и находились всегда после папок, кроме того "точка корня ".."" должна быть всегда вверху(как в TC или FAR). Огромное спасибо. Проблема обнаружена. Буду думать над алгоритмом сортировки. |