RAD Studio VCL Reference
ContentsIndex
PreviousUpNext
ComCtrls.TNodeAttachMode Enumeration

TNodeAttachMode identifies a new or changed tree node relationship.

Pascal
TNodeAttachMode = (
  naAdd,
  naAddFirst,
  naAddChild,
  naAddChildFirst,
  naInsert
);
C++
enum TNodeAttachMode {
  naAdd,
  naAddFirst,
  naAddChild,
  naAddChildFirst,
  naInsert
};

The TNodeAttachMode type specifies the way a new or relocated tree node will be related to some other node.

Value 
Meaning 
naAdd  
The new or relocated node becomes the last sibling of the other node.  
naAddFirst  
The new or relocated node becomes the first sibling of the other node.  
naInsert  
The new or relocated node becomes the sibling immediately before the other node.  
naAddChild  
The new or relocated node becomes the last child of the other node.  
naAddChildFirst  
The new or relocated node becomes the first child of the other node.  

 

Delphi Examples: 

{
The following code uses GetNodeAt to add a dragged node as a
child of the node under the mouse when it is dropped.  This
example requires a populated TreeView.  Also, the TTreeView
DragMode property must be set to dmAutomatic, and the TTreeView
OnDragOver event handler must be implemented to accept the
drop.
}
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var 
  AnItem: TTreeNode;
  AttachMode: TNodeAttachMode;
  HT: THitTests;
begin
  if TreeView1.Selected = nil then Exit;
  HT := TreeView1.GetHitTestInfoAt(X, Y);
  AnItem := TreeView1.GetNodeAt(X, Y);
  if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then 
  begin
    if (htOnItem in HT) or (htOnIcon in HT) then
      AttachMode := naAddChild
    else if htNowhere in HT then AttachMode := naAdd
    else if htOnIndent in HT then AttachMode := naInsert;
    TreeView1.Selected.MoveTo(AnItem, AttachMode); 
  end;
end;

procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := Source is TTreeView;
end;

 

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!