Код OnDragDrop выглядит так:
Code: |
var Node, SelNode: TTreeNode; begin Node := TreeView1.GetNodeAt(X, Y); if Node = nil then Exit; SelNode := TreeView1.Selected; SelNode.MoveTo(Node, naAddChild); // все уже встроено в TreeView end; |
Теперь разрешим перенос в TreeView2 из TreeView1
Code: |
Accept := (Source = TreeView1) and (TreeView2.GetNodeAt(x, y) <> nil); |
И в OnDragDrop копируем выбранную в TreeView1 ветвь во всеми подветвями, для чего придется сделать рекурсивный обход:
Code: |
var Node: TTreeNode;
procedure CopyNode(FromNode, ToNode: TTreeNode); var TempNode: TTreeNode; i: integer; begin TempNode := TreeView2.Items.AddChild(ToNode, ''); TempNode.Assign(FromNode); for i := 0 to FromNode.Count - 1 do CopyNode(FromNode.Item[i], TempNode); end;
begin Node := TreeView2.GetNodeAt(X, Y); if Node = nil then Exit; CopyNode(TreeView1.Selected, Node); end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!