treeview控件如何实现两个同级节点之间,把一个节点托到另一个节点上实现两个节点合并?
解决方案 »
- 请教在FilterGraph的onGraphComplete事件问题
- 【高分】连续打印,华表cell 【注】:java_bbs(zero[java])本人或者人事他的人麻烦进来一下
- 紧急!怎样获取excel工作表中的数据
- 請問下CPU FSB 533 MHZ 该配哪款DDR内存?
- res文件的调用
- 服务器端和客户端的远程连接?
- 这样在tcpserver中接收数据为什么程序会停止响应?大家救急,在线等待。多谢了!!!
- 如何让声音和图象同步
- 有谁知道TdxComponentPrinter怎样联上dxdbgrid中的数据打印?
- 我用Shell_NotifyIcon更改托盘图标,可没反应,高手帮我看看,谢了
- 求一元线性趋势方程算法
- 2009中如何将主窗体最小化到拖盘的trayicon?
TreeView1: TTreeView;
procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
private
FNode : TTreeNode;
procedure TryStartDrag(ANode: TTreeNode; ATreeView: TTreeView);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
nodeDest : TTreeNode;
i : Integer;
begin
if( not((Sender is TTreeView)and(Sender=Source)) )then Exit;
nodeDest := TTreeView(Sender).GetNodeAt(X, Y);
try
if( (not Assigned(nodeDest))or(not Assigned(FNode)) )then Exit;
if((FNode.Parent=nodeDest.Parent)and(FNode.Count>0))then
begin
for i:=FNode.Count-1 downto 0 do
FNode.getFirstChild.MoveTo(nodeDest, naAddChild);
FNode.Delete;
end else
begin
FNode.MoveTo(nodeDest, naAddChild);
end;
finally
FNode := nil;
end;
end;procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
node : TTreeNode;
begin
Accept := ( (Sender is TTreeView)and(Sender=Source)and Assigned(FNode) );
if(not Accept)then Exit;
node := TTreeView(Sender).GetNodeAt(X, Y);
Accept := ( Assigned(node)and(node<>FNode)and(not node.HasAsParent(FNode)) );
end;procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if((Button=mbLeft)and(Shift=[ssLeft])and(Sender is TTreeView))then
TryStartDrag(TTreeView(Sender).GetNodeAt(X, Y), TTreeView(Sender));
end;procedure TForm1.TryStartDrag(ANode: TTreeNode; ATreeView: TTreeView);
begin
if(Assigned(ANode)and Assigned(ATreeView))then
begin
FNode := ANode;
ATreeView.BeginDrag(False);
end;
end;