Delphi 过滤TcxTreeList

Delphi 过滤TcxTreeList,delphi,devexpress,Delphi,Devexpress,是否可以在TcxTreeList中有一个可选的过滤器,并且只显示满足列过滤条件的叶子(由用户选择,就像使用网格一样) 我认为这是可能的,但我似乎找不到如何 Delphi XE上的ExpressQuantumTreeList 5.49TcxTreeList没有内置过滤功能。 我会在每次过滤器数据更改时重复树,并将节点的Visible属性设置为false。然后调用TcxTreeList的DataChanged方法刷新显示 我通常在提供者模式下使用DevExpress组件。 我有一个内部TList子体

是否可以在TcxTreeList中有一个可选的过滤器,并且只显示满足列过滤条件的叶子(由用户选择,就像使用网格一样)

我认为这是可能的,但我似乎找不到如何


Delphi XE上的ExpressQuantumTreeList 5.49

TcxTreeList没有内置过滤功能。 我会在每次过滤器数据更改时重复树,并将节点的
Visible
属性设置为false。然后调用TcxTreeList的
DataChanged
方法刷新显示

我通常在提供者模式下使用DevExpress组件。 我有一个内部TList子体,它保存我的项目。 在本例中,我可以有两个列表:TListAllItems和TListFilteredItems

我的TcxTreeList将显示TListFilteredItems中的项目。 当树列表首次填充时,两个列表将包含相同的项。 每当我筛选列表时,我都会从TListFilteredItems中删除/添加项目,并调用
CustomDataController.DataChanged
。然后将不显示筛选出的项目,因为TListFilteredItems不包含这些项目

这不会占用太多内存,因为只有第一个列表TListAllItems才拥有这些项目,而另一个列表TListAllItems只保留指针,不会在删除时释放这些项目,也不会在添加时创建它们,而只是添加/删除指向内部TList对象的项目指针。

您可能会在DevExpress论坛中得到(更好的)答案。他们由DevExpress员工监控。