2011-09-28 47 views
1

我正在使用HyperTreeList显示第一列中名称的项目列表,第二列中显示“删除”按钮。我编写了一个函数来过滤TextCtrl中某些文本所显示的内容。要隐藏TreeListItems,我这样做:如何隐藏treelistitem中的所有列?

treelist.HideItem(branch, True) 

这里树形列表是HyperTreeList和分支是TreeListItem。第一列隐藏得很好,但第二列中没有按钮隐藏。如何获得TreeListItem中的所有列以隐藏?

回答

0

按照docs,这应该工作:

treelist.SetColumnShown(column_index, False) 

但这将隐藏一切列。如果我明白你在说什么,你试图隐藏的那一行实际上并没有消失,只是第一列的值。在这种情况下,您可能需要使用treelist.Update()来刷新小部件才能让行的其余部分消失。

+0

'SetColumnShown'给了我一些奇怪的行为,但更新几乎给了我想要的东西。我不认为有可能在不修改HyperTreeList的情况下隐藏整行。我最终做的是标记过滤器应显示的项目,删除根目录的所有子项目,并用标记的项目重建树。 – topher

+0

而不是重建列表,你也可以使用'treelist.Delete(node)'。这完全消除了节点(不只是隐藏它),所以如果你想重新显示该节点,那么你将不得不跟踪它的位置并重新添加它。 –