TTreeGetNodeAt (Delphi)
From RAD Studio Code Examples
Language:
Description
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.
Code
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;
Uses
- Vcl.ComCtrls.TCustomTreeView.GetNodeAt ( fr | de | ja )
- Vcl.ComCtrls.TTreeNode.MoveTo ( fr | de | ja )
- Vcl.ComCtrls.TCustomTreeView.Selected ( fr | de | ja )
- Vcl.ComCtrls.TCustomTreeView.GetHitTestInfoAt ( fr | de | ja )
- Vcl.Controls.TControl.DragMode ( fr | de | ja )
- Vcl.ComCtrls.TNodeAttachMode ( fr | de | ja )
- Vcl.ComCtrls.THitTest ( fr | de | ja )