如何在TJvTreeView中一次移动多个节点?

时间:2011-02-24 18:17:40

标签: delphi delphi-2007

当您选择JvTreeView的多个节点,然后尝试拖动这些节点时,JvTreeView会选择您单击要拖动的节点,而不是启动拖动所有所选节点。您最终只拖动此单个节点。

是否可以在JvTreeView中拖动多个节点?我正在使用Delphi 2007。

更新:奇怪的是,如果我在拖动项目时按住CTRL + SHIFT,我可以成功拖动它们。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

假设MultiSelectStyle是默认[msControlSelect],那么您的问题的答案是'当您选择最后一个项目并开始拖动时,您不会释放控制键/ em>的

罪魁祸首在TJvTreeView.WMLButtonDown JvComCtrls.pas。当TreeView为MultiSelect时,如果按下'Ctrl',则代码测试,如果未按下'Ctrl',则清除所有项目并选择单击的项目。它应该测试是否已经选中了被点击的项目,如果是,则不执行任何操作。

您可以在不拖动的情况下看到已损坏的行为。多选几个项目,然后用鼠标单击所选项目。 VCL TreeView不会选择或取消选择任何内容,而JVTreeView则取消选择所有项目并选择单击的项目。

答案 1 :(得分:1)

是的,我一直这样做。

当然,Multi-Select需要为True,您可能需要查看TTreeView的MultiSelectStyle。它控制着可以同时选择哪种类型的节点。例如,如果msSiblingOnly设置为true,则只能选择sibblings。

您使用的是dmAutomatic还是dmManual。如果是后者,可能是你在OnMouse *事件中做了一些事情,否定了你之前做出的多重选择。