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