Как сортировать данные как я хочу в VirtualExplorerTreeview (VirtualShellTools) - PullRequest
0 голосов
/ 25 мая 2009

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

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

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

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

1 Ответ

3 голосов
/ 25 мая 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...