窗口中放置了一个TREEVIEW,里面实现了类似于目录树一样的结构
如何将下级条目拖拽到其他条目下
如何将下级条目拖拽到其他条目下
解决方案 »
- cbb复制到数据表的问题
- TClientDataSet 保存为xml的问题
- 如何在delphi中添加自定义控件!!
- 一个菜问题,请教各位了
- 用clientDataset通过soapconnection连接远程数据库,如何post到本地!
- (100分求建议)一个邮件客户端,单线程多账户,带地址簿功能,附全部源码及控件和编程思路,恳请各位(尤其是已经下载的)给予点评!!
- 字符串发送问题
- 请问为什么不能调试dll,我已经加了hostexe!!!!
- 请朋友们介绍一下:DELPHI组件开发的好网站或是好书籍
- InterBase数据库出错。紧急求助!!!请各位高手多加指点
- 100分求图像合成转成透明
- 在delphi中怎么读出*.htm的文件
procedure AddSubTree(DestTree: TTreeView; SourceNode, DestNode: TTreeNode; AddState: Boolean);varTempNode, TempNode1: TTreeNode;I : integer;beginTempNode := DestNode;with DestTree do beginif Not (AddState) then TempNode := Items.AddChild(DestNode, sourceNode.Text);if SourceNode.HasChildren then beginfor I := 0 to SourceNode.Count-1 do beginif I>0 thenTempNode := Items.AddChild(TempNode.Parent, SourceNode.Item[I].Text)elseTempNode := Items.AddChild(TempNode, SourceNode.Item[I].Text);AddSubTree(DestTree, SourceNode.Item[I], TempNode, True);end;end;end;end;procedure MoveSubTreeView(SourceTreeView, DestTreeView: TTreeView; Keep: Boolean);varTempLevel, TempIndex : integer;I, J : integer;TempNode : array of TTreeNode;TempNode1 : TTreeNode;Yes_No : Boolean;OldOnChanging, OldOnChanging1 : TTVChangingEvent;OldOnChange, OldOnChange1 : TTVChangedEvent;IsSelected : TTreeNode;beginOldOnChanging := DestTreeView.OnChanging;DestTreeView.OnChanging := Nil;OldOnChange := DestTreeView.OnChange;DestTreeView.OnChange := Nil;OldOnChanging1 := SourceTreeView.OnChanging;SourceTreeView.OnChanging := Nil;OldOnChange1 := SourceTreeView.OnChange;SourceTreeView.OnChange := Nil;IsSelected := SourceTreeView.Selected;TempLevel := SourceTreeView.Selected.Level;setlength(TempNode, TempLevel+1);Yes_No := False;TempNode1 := Nil;TempIndex := FindNode(DestTreeView, SourceTreeView.Selected.Text);if TempIndex>-1 then beginDestTreeView.Items[TempIndex].Delete;end;with SourceTreeView do beginTempNode[TempLevel] := Selected;if TempLevel>0 thenfor I := TempLevel-1 downto 0 do beginTempNode[I] := TempNode[I+1].Parent;end;end;with DestTreeView.Items do beginif Count>0 then beginfor I := TempLevel downto 0 dofor J := Count-1 downto 0 do beginif (TempNode[I].Text=DestTreeView.Items[J].Text) and (TempNode1=Nil) then beginif I=Templevel then Yes_no := True;TempNode1 := DestTreeView.Items[J];end;end;end;if TempNode1=Nil thenfor I := 0 to TempLevel-1 do beginTempNode1 := AddChild(TempNode1, TempNode[I].Text);endelsefor I := TempNode1.Level+1 to TempLevel-1 do beginTempNode1 := AddChild(TempNode1, TempNode[I].Text);end;end; AddSubTree(DestTreeView, IsSelected, TempNode1, False);//Yes_No);if (Not (Keep)) then beginif (IsSelected.Parent<>Nil) and (IsSelected.Parent.Count<1) thenIsSelected.Parent.DeleteelseIsSelected.Delete;end;DestTreeView.SortType := stData;DestTreeView.OnChanging := OldOnChanging;DestTreeView.OnChange := OldOnChange;SourceTreeView.OnChanging := OldOnChanging1;SourceTreeView.OnChange := OldOnChange1;end;