过滤TcxTreeList

时间:2012-01-25 03:28:08

标签: delphi devexpress

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

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

Delphi XE上的ExpressQuantumTreeList 5.49

1 个答案:

答案 0 :(得分:2)

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

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

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

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