RAD Studio VCL Reference
|
Determines how the control initiates drag-and-drop or drag-and-dock operations.
property DragMode: TDragMode;
__property TDragMode DragMode;
Use DragMode to control when the user can drag the control. Disable the drag-and-drop or drag-and-dock capability at runtime by setting the DragMode property value to dmManual. Enable automatic dragging by setting DragMode to dmAutomatic.
C++ 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 set to dmAutomatic, and the TTreeView OnDragOver event handler must be implemented to accept the drop. */ void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source, int X, int Y) { if (Source != dynamic_cast<TObject *>(TreeView1) || TreeView1->Selected == NULL) return; THitTests HT = TreeView1->GetHitTestInfoAt(X, Y); TNodeAttachMode AttachMode; TTreeNode *Item = TreeView1->GetNodeAt(X, Y); if (HT.Contains(htOnItem) || HT.Contains(htOnIcon)) AttachMode = naAddChild; else if (HT.Contains(htNowhere)) AttachMode = naAdd; else if (HT.Contains(htOnIndent)) AttachMode = naInsert; else return; TreeView1->Selected->MoveTo(Item, AttachMode); } void __fastcall TForm1::TreeView1DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept) { Accept = (Source == dynamic_cast<TObject *>(TreeView1)); }
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!
|