2011-09-28 105 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)'。這完全消除了節點(不只是隱藏它),所以如果你想重新顯示該節點,那麼你將不得不跟蹤它的位置並重新添加它。 –