我使用 VirtualTree.IsVisible[n] := false;
隐藏了一些VirtualTreeView项目。
在一个函数中i使用VirtualTree.GetNextSelected(n);
方法遍历所有选定的项目。但是存在问题 - 如果我手动选择一些项目,例如使用ctrl单击或shift,则选择的项目是选择的项目。
但是,如果我按Ctrl a选择全部,那么GetNextSelected
就会给我所有节点,包括隐藏的节点。
我通过检查 if (VirtualTree.IsVisible[n]) ...
来避免循环浏览所有项目并仅获取可见的方法,但这似乎是一个错误,或者可能有一个选项可以控制Ctrl A的选项 - 它将仅选择可见的节点或选择可见的节点或所有这些?
所以这是一个错误还是我错过了一些选择选项(我对它们进行了检查),或者我应该使用其他方法仅通过可见节点循环?
正如大卫·赫弗南(David Heffernan)和约阿希姆·马尔德(Joachim Marder)所显示的那样,这是一个设计选择,而不是错误。因此,通过检查if (VirtualTree.IsVisible[n]) ...
仅通过可见的项目循环时,使用GetNextSelected
进行循环时需要引入解决方法。