过滤一个TcxTreeList

是否可以在TcxTreeList中有一个可选过滤器,并且只显示符合该列过滤条件的叶子(可由用户选择,例如使用网格)。

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

Delphi XE上的ExpressQuantumTreeList 5.49


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

我通常在提供者模式下使用DevExpress组件。 我有一个内部TList后裔,持有我的物品。 在这种情况下,我可以有2个列表:TListAllItems和TListFilteredItems。

我的TcxTreeList将显示来自TListFilteredItems的项目。 当TreeList第一次填充时,两个列表都会保存相同的项目。 每当我过滤我的列表,我会从TListFilteredItems删除/添加项目,并调用CustomDataController.DataChanged 。 然后过滤掉的项目将不会显示,因为TListFilteredItems不包含它们。

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

链接地址: http://www.djcxy.com/p/31047.html

上一篇: Filtering a TcxTreeList

下一篇: header filter does not work if column is initially hidden