有一棵树: ROOT - VirtualStringTree(你看不到它,TVirtualStringTree.RootNode)
我可以将“我的根节点3”拖放到任何可见节点,但我无法将其返回到defaut位置,直到树的根级别。
我试试:
//Part of code from OnDragDrop Event of VirtualStringTree
if (Sender.DropTargetNode = Sender.RootNode) then
begin
for i := 0 to high(Nodes) do
begin
LinksTree.MoveTo(Nodes[i], Sender.DropTargetNode, Attachmode, False);
end;
end;
我将鼠标放到了无处,但没有任何反应。在DragOver中,如果DropTarget是VST.RootNode,则接受drop to root。
有人知道,如果我将鼠标拖动到组件的空白区域,如何将节点拖放到VST.RootNode? p>
答案 0 :(得分:6)
您还没有显示您的代码,但基本上,您只需要为Mode
方法调用使用适当的(附加)MoveTo
参数来处理情况,当(drop){{1您的Mode
事件方法的参数等于OnDragDrop
,这表示用户刚刚将节点删除到树的空白区域。我假设您正在使用以下代码来确定dmNowhere
事件方法中的附加模式:
OnDragDrop
如果是这样,你可以告诉树附加节点,例如如果放弃模式为var
...
AttachMode: TVTNodeAttachMode;
begin
...
// the Mode here is a drop mode parameter
case Mode of
dmNowhere: AttachMode := amNoWhere; // <- where this stands for no move
...
end;
...
end;
,则将附加模式更改为amAddChildLast
,作为最后一个孩子:
dmNowhere