delphi 如何将一个treeview中的节点拖拽到另一个treeview控件的节点下

不是在同一个treeview下,最好详细说明,有代码更好。... 不是在同一个treeview下 ,最好详细说明,有代码更好。 展开
 我来答
xtfnpgy
2014-04-15 · TA获得超过1784个赞
知道大有可为答主
回答量:1989
采纳率:76%
帮助的人:1092万
展开全部
拖动放开后:
先增加节点内容到新的treeview; (直接新增节点,赋值即可)
再删除你拖动的treeview; (删除选中的节点即可)
追问
我现在只会在同一个treeview下面,通过填写MouseDown(鼠标按下),tv1DragOver(鼠标移动),tv1DragDrop(鼠标松开)响应事件来拖动一个节点到同一个treeview的其他节点下面。但是我想把一个treeview控件的节点拖到并添加到另一个treeview 下面的时候就不会了。我想问应该填写什么响应事件来做到这一点,最好有样例程序。谢了。
追答

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

var 

      node: TTreeNode; 

begin 

      node := TreeView1.GetNodeAt(X, Y);  // 获取鼠标按下位置的节点 

   if (node <> nil)  and (Button = mbLeft) then      //  and (node.Level > 0)

         TreeView1.BeginDrag(True);  // 启动拖动

end; 


procedure TForm1.TreeView2DragOver(Sender, Source: TObject; X, Y: Integer;

  State: TDragState; var Accept: Boolean);

var 

      node: TTreeNode;

begin

   node := TreeView2.GetNodeAt(X, Y);

   if (node <> nil)  and (TreeView1.Selected.Parent <> node) then // and (node.Level = 0)

         Accept := True

   else

         Accept := False;

end;

procedure TForm1.TreeView2DragDrop(Sender, Source: TObject; X, Y: Integer);

var 

      node: TTreeNode;

begin

  node := TreeView2.GetNodeAt(X, Y);

  if (node <> nil) and (node.Level = 0) then

  begin

     TreeView1.Selected.MoveTo(node, naAddChild);  // 将节点移动到目标节点的下一级

  end;

end;

还不会的,有附件可以下载看看。


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式