首先将TreeView及ListView的DragMode属性设为:dmAutomatic;其后代码如下:
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := False;
if (source is TTreeView) or (source is TListView) then
Accept := True;
end;
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
tSrcNode, tDesNode: TTreeNode;
begin
tDesNode := TTreeView(Sender).GetNodeAt(X, Y);
if Source is TTreeView then
begin
tSrcNode := TTreeView(Sender).Selected;
tSrcNode.MoveTo(tDesNode, naAddChild);
end;
if Source is TListView then
begin
TreeView1.Items.AddChild(tDesNode, ListView1.Selected.Caption);
ListView1.Selected.Delete;
self.TreeView1.FullExpand;
end;
end;<

这篇博客详细介绍了如何在Delphi中设置和实现TreeView和ListView组件之间的拖放操作。通过设置DragMode属性为dmAutomatic,然后编写DragOver和DragDrop事件处理函数,实现了在同一组件内部以及两个组件之间的节点移动和交换功能。

3046

被折叠的 条评论
为什么被折叠?



