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(ドラッグしたノード)をインサート
コメント