Delphi TreeView Drag and Drop でノードを移動
Delphi の TreeView(TTreeView) ノードをドラッグ・アンド・ドロップで移動させるコード
TreeView の DragMode プロパティを dmAutomatic にしておく
- // TreeView1.DragMode := dmAutomatic;
- procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
- var
- SourceNode, TargetNode: TTreeNode;
- begin
- SourceNode := TreeView1.Selected;
- TargetNode := TreeView1.GetNodeAt(X, Y);
- if Assigned(SourceNode) and Assigned(TargetNode) then begin
- SourceNode.MoveTo(TargetNode, naInsert);
- end;
- end;
- procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
- var
- SourceNode, TargetNode: TTreeNode;
- begin
- SourceNode := TreeView1.Selected;
- TargetNode := TreeView1.GetNodeAt(X, Y);
- Accept := Assigned(SourceNode) and Assigned(TargetNode) and (TargetNode <> SourceNode);
- end;
OnDragOver でドロップしてよい場所を判定、OnDragDrop で TargetNode 位置へ、SourceNode(ドラッグしたノード)をインサート
コメント