如何选择所有仅可见的 Virtual TreeView 项目?
How to SelectAll only visible VirtualTreeView items?
我使用 VirtualTree.IsVisible[n] := false;
隐藏了一些 VirtualTreeView 项目。
在一个函数中,我使用 VirtualTree.GetNextSelected(n);
方法遍历所有 selected 项目。但是有一个问题 - 如果我手动 select 一些项目,例如使用 CTRL-click 或 SHIFT,循环的项目就是那些 selected.
但是如果我按 CTRL + A 到 select all 然后 GetNextSelected
给我所有节点,包括那些隐藏的节点。
我通过检查 if (VirtualTree.IsVisible[n]) ...
做了一个解决方法,以避免遍历所有项目并只获取可见的项目,但这似乎是一个错误,或者可能有一个选项可以控制 CTRL + A 的行为方式 - 将它 select 仅可见节点还是所有可见节点?
这是一个错误还是我错过了一些 selection 选项(我检查了所有选项)或者我是否应该使用其他方法仅通过可见节点循环?
正如 David Heffernan 和 Joachim Marder 所说,这是一个设计选择,而不是错误。出于这个原因,需要在使用 GetNextSelected
循环项目时引入一种解决方法,方法是选中 if (VirtualTree.IsVisible[n]) ...
以仅循环可见项目。
我使用 VirtualTree.IsVisible[n] := false;
隐藏了一些 VirtualTreeView 项目。
在一个函数中,我使用 VirtualTree.GetNextSelected(n);
方法遍历所有 selected 项目。但是有一个问题 - 如果我手动 select 一些项目,例如使用 CTRL-click 或 SHIFT,循环的项目就是那些 selected.
但是如果我按 CTRL + A 到 select all 然后 GetNextSelected
给我所有节点,包括那些隐藏的节点。
我通过检查 if (VirtualTree.IsVisible[n]) ...
做了一个解决方法,以避免遍历所有项目并只获取可见的项目,但这似乎是一个错误,或者可能有一个选项可以控制 CTRL + A 的行为方式 - 将它 select 仅可见节点还是所有可见节点?
这是一个错误还是我错过了一些 selection 选项(我检查了所有选项)或者我是否应该使用其他方法仅通过可见节点循环?
正如 David Heffernan 和 Joachim Marder 所说,这是一个设计选择,而不是错误。出于这个原因,需要在使用 GetNextSelected
循环项目时引入一种解决方法,方法是选中 if (VirtualTree.IsVisible[n]) ...
以仅循环可见项目。