2009-05-25 1 views
0

Это, наверное, очень «тупой» вопрос для тех, кто знает VirtualShellTools, но я только начал использовать его и не смог найти свой ответ в коде демо. Обратите внимание, что я также не знаком с virtualtreeview.Как сортировать данные, как я хочу в VirtualExplorerTreeview (VirtualShellTools)

Я использую VirtualExplorerTreeview, чтобы отобразить структуру каталогов, связанный с VirtualExplorerListview для отображения определенного типа файлов в выбранной директории, а также конкретные сведения о них

Я был в состоянии указать их на в нужном месте, связать их так, как я хотел, отфильтровать все в списке и посмотреть на демонстрации, у меня есть довольно хорошая идея о том, как добавить свои собственные столбцы и нарисовать их для отображения моих пользовательских данных.

Моя проблема заключается в Treeview: я хотел бы отсортировать каталоги, отображаемые в том порядке, в котором я хочу; в частности, я хочу сначала указать «Мои документы» и другую папку, затем диски, а затем съемные носители. Глядя в свойстве TNamespace, я нашел, как отличить их (Directory and Removable properties), но я не знаю, как реализовать свой собственный вид/какое событие мне нужно. Я попробовал CompareNode, но это даже не похоже на вызов.

+0

Эта вторая часть ПОЛНОСТЬЮ не связана с сортировкой. Вам лучше всего перейти к отдельному вопросу о добавлении виртуальных пространств имен. –

+0

Да, я думаю, что ты прав, я удалил его – Lepidosteus

ответ

3

Если вы хотите сделать все сами, то установите toUserSort в TVirtualExplorerTree.TreeOptions.VETMiscOptions. Это заставляет элемент управления просто использовать метод DoCompare, унаследованный от виртуального древовидного представления, и который должен вызывать обработчик события OnCompareNodes.

Лучшим способом является предоставление пользовательского TShellSortHelper. Сделайте потомка этого класса и переопределите любые методы, которые вам нужны. Создайте экземпляр этого класса и назначьте его свойству SortHelper дерева. (Дерево берет на себя роль помощника, освобождает старый, но не новый). Если элементы сортируются по столбцу, который этот класс не знает, как сравнивать, тогда обработайте событие OnCustomColumnCompare дерева.

Чтобы выяснить, какие методы вам нужно переопределить или какие события вам нужно обрабатывать, установите контрольную точку в TCustomVirtualExplorerTree.DoCompare и перейдите к ней, чтобы узнать, что вызывается в разных ситуациях.

 Смежные вопросы

  • Нет связанных вопросов^_^