Содержание материала

Код 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;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить