2016-11-22 83 views
0

我已經使用VirtualTree.IsVisible[n] := false;隱藏了一些VirtualTreeView項目。如何選擇所有僅可見的VirtualTreeView項目?

在一個函數I通過使用VirtualTree.GetNextSelected(n);方法所有選定的項目迭代。但有一個問題 - 如果我手動選擇一些項目,例如使用CTRL-單擊或SHIFT,則循環的項目就是選中的項目。

但是,如果我按Ctrl + A全選,然後GetNextSelected給我的所有節點,包括那些被隱藏。

我做了一個解決方法,檢查if (VirtualTree.IsVisible[n]) ...,以避免循環所有項目和只提取可見的,但這似乎是一個錯誤,或者有一個選項,控制如何CTRL + A將行爲 - 它只會選擇可見節點或所有這些?

所以這是一個錯誤也許我錯過了一些選擇項(我檢查他們全部)或我應該使用一些其他的方法只能通過可視節點的循環?

+2

這是一個設計選擇,而不是一個錯誤。你必須適應它。 –

+1

@DavidHeffernan你確定是這樣嗎?爲什麼選擇使用鍵盤SHIFT + ARROW鍵只選擇可見節點,而不是隱藏的可見節點之間的所有註釋? CTRL + A會選擇隱藏的,但SHIFT +箭頭不會呢? – Coder12345

+2

關於CTRL +虛擬TreeView像大多數其他控件和Windows資源管理器一樣工作,對用戶來說,不同的行爲將是意外的,因此在我看來是不好的選擇。 –

回答

1

如可見大衛赫弗南和約阿希姆黃鼠狼,它是一個設計選擇,而不是一個錯誤。爲此,需要通過使用GetNextSelected僅通過可視項檢查if (VirtualTree.IsVisible[n]) ...循環項目循環何時引入一種變通方法。

相關問題