Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 670

•  TDictionary Custom Sort  5 800

•  Fast Watermark Sources  5 603

•  3D Designer  8 218

•  Sik Screen Capture  5 913

•  Patch Maker  6 388

•  Айболит (remote control)  6 378

•  ListBox Drag & Drop  5 237

•  Доска для игры Реверси  94 551

•  Графические эффекты  6 570

•  Рисование по маске  5 644

•  Перетаскивание изображений  4 760

•  Canvas Drawing  5 135

•  Рисование Луны  4 863

•  Поворот изображения  4 411

•  Рисование стержней  3 116

•  Paint on Shape  2 360

•  Генератор кроссвордов  3 228

•  Головоломка Paletto  2 551

•  Теорема Монжа об окружностях  3 328

•  Пазл Numbrix  2 200

•  Заборы и коммивояжеры  2 849

•  Игра HIP  1 820

•  Игра Go (Го)  1 740

•  Симулятор лифта  2 072

•  Программа укладки плитки  1 799

•  Генератор лабиринта  2 241

•  Проверка числового ввода  1 925

•  HEX View  2 226

•  Физический маятник  1 911

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Копировать нижние узлы TTreeView во второй TTreeView



Оформил: DeeCo

type
   {: Callback to use to copy the data of a treenode when the 
     node itself is copied by CopySubtree. 
   @param oldnode is the old node 
   @param newnode is the new node 
   @Desc Use a callback of this type to implement your own algorithm 
     for a node copy. The default just uses the Assign method, which 
     produces a shallow copy of the nodes Data property. }
   TCopyDataProc = procedure(oldnode, newnode : TTreenode);

 {: The default operation is to do a shallow copy of the node, via 
Assign. }
 procedure DefaultCopyDataProc(oldnode, newnode : TTreenode);
 begin
   newnode.Assign(oldnode);
 end;

 {-- CopySubtree 
-------------------------------------------------------}
 {: Copies the source node with all child nodes to the target treeview. 
@Param sourcenode is the node to copy 
@Param target is the treeview to insert the copied nodes into 
@Param targetnode is the node to insert the copy under, can be nil to 
  make the copy a top-level node. 
@Param CopyProc is the (optional) callback to use to copy a node. 
  If Nil is passed for this parameter theDefaultCopyDataProc will be 
used. 
@Precondition  sourcenode <> nil, target <> nil, targetnode is either 
  nil or a node of target 
@Raises Exception if targetnode happens to be in the subtree rooted in 
  sourcenode. Handling that special case is rather complicated, so we 
  simply refuse to do it at the moment. 
}{ Created 2003-04-09 by P. Below ----------------------------------------------------------------------- 
}
 procedure CopySubtree(sourcenode : TTreenode; target : TTreeview;
   targetnode : TTreenode; CopyProc : TCopyDataProc = nil);
 var
   anchor : TTreenode;
   child : TTreenode;
 begin { CopySubtree }
   Assert(Assigned(sourcenode),
     'CopySubtree:sourcenode cannot be nil');
   Assert(Assigned(target),
     'CopySubtree: target treeview cannot be nil');
   Assert((targetnode = nil) or (targetnode.TreeView = target),
     'CopySubtree: targetnode has to be a node in the target treeview.');

   if (sourcenode.TreeView = target) and
     (targetnode.HasAsParent(sourcenode) or (sourcenode =
     targetnode)) then
     raise Exception.Create('CopySubtree cannot copy a subtree to one of the ' +
       'subtrees nodes.');

   if not Assigned(CopyProc) then
     CopyProc := DefaultCopyDataProc;

   anchor := target.Items.AddChild(targetnode, sourcenode.Text);
   CopyProc(sourcenode, anchor);
   child := sourcenode.GetFirstChild;
   while Assigned(child) do
    begin
     CopySubtree(child, target, anchor, CopyProc);
     child := child.getNextSibling;
   end; { While }
 end; { CopySubtree }


 procedure TForm1.Button1Click(Sender : TObject);
 begin
   if assigned(treeview1.selected) then
     CopySubtree(treeview1.selected, treeview2, nil);
 end;







Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте