Фильтрация TcxTreeList - PullRequest
       9

Фильтрация TcxTreeList

2 голосов
/ 25 января 2012

Возможно ли иметь дополнительный фильтр в TcxTreeList и отображать только те листья, которые соответствуют критериям фильтра для столбца (выбирается пользователем, например, с помощью сетки).

Я думал, что это возможно, но я не могу понять, как ...

ExpressQuantumTreeList 5.49 на Delphi XE

1 Ответ

2 голосов
/ 25 января 2012

Нет встроенной функции фильтрации для TcxTreeList. Я хотел бы повторить дерево при каждом изменении данных фильтра и установить для свойства Visible узла значение false. После этого вызовите метод DataChanged из TcxTreeList, чтобы обновить отображение.

Обычно я работаю с компонентами DevExpress в режиме провайдера. У меня есть внутренний потомок TList, который содержит мои элементы. В этом случае у меня может быть 2 списка: TListAllItems и TListFilteredItems.

Мой TcxTreeList будет отображать элементы из TListFilteredItems. При первом заполнении TreeList оба списка будут содержать одинаковые элементы. Всякий раз, когда я фильтрую свой список, я удаляю / добавляю элементы из TListFilteredItems и вызываю CustomDataController.DataChanged. Тогда отфильтрованные элементы не будут отображаться, поскольку TListFilteredItems не содержит их.

Это не займет много памяти, поскольку только первый список TListAllItems будет владеть элементами, тогда как другой будет хранить только указатели, а не Освобождать элементы при удалении или Создавать их при добавлении, а просто добавлять / удалять указатель элемента на внутренний объект TList.

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