如何防止拖动某个虚拟StringTree NodeLevel?
我正在努力完成的
我有一个可以由用户扩展的具有子行的虚拟字符串树。 所有节点的最高层级应可拖动。 但是没有一个子节点级别应该是。
如何测试
为了测试,我使用当前虚拟TreeView修订版的高级演示项目。 第二个演示(常规功能和功能)具有适当的节点层次结构,您可以拖动节点。
考虑
我想我可以通过使用stringtree的OnDragAllowed
事件来完成我的任务,但是当我拖动时它不会被触发。 我的目的是在拖动开始之前检查节点级别( GetNodeLevel
),并且只允许拖动顶级节点级别0。
如何防止拖动虚拟字符串树的某些节点级别?
为了答复...所有功劳都归功于TLama。
为了防止拖动某个节点级别,我们可以实现OnDragAllowed
事件处理程序,并确保也将StringTree的DragMode
设置为dmManual
。
这里是事件处理程序。
procedure TForm1.vstDragAllowed(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; var Allowed: Boolean);
begin
{ dragging shall only be possible for top nodes (level 0) }
Allowed := TVirtualStringTree(Sender).GetNodeLevel(Node) = 0;
end;
Drag and Drop的基础和含义在这篇Delphi About.com文章中有介绍。
链接地址: http://www.djcxy.com/p/35085.html上一篇: How to prevent a certain Virtual StringTree NodeLevel from being dragged?