如何选择只有可见的VirtualTreeView项目?

时间:2016-11-22 17:43:09

标签: delphi virtualtreeview

我使用VirtualTree.IsVisible[n] := false;隐藏了一些VirtualTreeView项目。

在一个函数中,我使用VirtualTree.GetNextSelected(n);方法迭代所有选定的项目。但是有一个问题 - 如果我手动选择一些项目,例如使用CTRL-click或SHIFT,那么循环的项目就是选中的项目。

但如果我按CTRL + A选择全部,那么GetNextSelected会给我所有节点,包括那些隐藏的节点。

我通过检查if (VirtualTree.IsVisible[n]) ...以避免遍历所有项目并仅获取可见项目来做一个解决方法,但这似乎是一个错误或者可能有一个控制CTRL + A行为的选项 - 它会选择吗?只有可见节点或所有节点?

这是一个错误,或者我错过了一些选择选项(我全部检查过)或我是否应该使用其他方法仅通过可见节点进行循环?

1 个答案:

答案 0 :(得分:1)

正如David Heffernan和Joachim Marder所说,这是一个设计选择,而不是一个错误。出于这个原因,我们需要在使用GetNextSelected循环浏览项目时引入一种解决方法,方法是选中if (VirtualTree.IsVisible[n]) ...以仅循环显示可见项目。