2016-11-22 82 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]) ...循环项目循环何时引入一种变通方法。

相关问题