gpt4 book ai didi

delphi - TV虚拟字符串树。如何拖放到ROOT级别?

转载 作者:行者123 更新时间:2023-12-03 15:25:18 29 4
gpt4 key购买 nike

A有一棵树:ROOT - VirtualStringTree(你看不到它,TVirtualStringTree.RootNode)

  • 我的根节点 1
  • 我的根节点 2
    • 第二个节点 1
    • 第二个节点 2
    • 第二个节点 3
  • 我的根节点 3

我可以将“我的根节点 3”拖放到任何可见节点,但无法将其返回到默认位置,即树的根级别。

我尝试一下:

//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,我接受放置到根目录。

有人知道,如果我将鼠标拖动到组件的空白处,如何将节点拖放到 VST.RootNode 吗?

最佳答案

您还没有显示您的代码,但基本上,您只需要为您的 MoveTo 方法调用使用适当的(附加)Mode 参数,当OnDragDrop 事件方法的 (drop) Mode 参数等于 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;

如果是这样,您可以告诉树附加节点,例如如果放置模式为 dmNowhere,则将附加模式更改为 amAddChildLast 作为最后一个子项:

var
...
AttachMode: TVTNodeAttachMode;
begin
...
// the Mode here is a drop mode parameter
case Mode of
dmNowhere: AttachMode := amAddChildLast; // <- attach node as a last child
...
end;
...
end;

关于delphi - TV虚拟字符串树。如何拖放到ROOT级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873163/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com