procedure TForm1.Btn1Click(Sender: TObject); Const MyDocDir = 'C:\My Documents'; PersonDir = '3hSoft'; Var Var I : Word; SubNodeName : array [1..5] of ShortString; RootNode, SubNode : TTreeNode; P : PString; begin SubNodeName[1] := '便笺'; SubNodeName[2] := '发件箱'; SubNodeName[3] := '联系人'; SubNodeName[4] := '任务'; SubNodeName[5] := '日记'; TV1.Items.Clear; TV1.Items.BeginUpdate; New(P); P^ := MyDocDir + '\' + PersonDir; RootNode := TV1.Items.AddObject(Nil, '个人文件夹', P); // 此 Node 的图标已对 Images 属性中取第 0 个了。 For I := 1 to 5 do begin New(P); P^ := MyDocDir + '\' + PersonDir + '\' + SubNodeName[I]; SubNode := TV1.Items.AddChildObject(RootNode, SubNodeName[I], P) ; ; // 如果不想使用图标的话请删除以下两行 SubNode.ImageIndex := I; SubNode.SelectedIndex := I; end; TV1.Items.EndUpdate; end;
二.在TreeView中如何设置选中结点
var i:integer; {i为设置的选中结点的索引值}
begin if i>treeview1.items.count then treeview1.items[i].selected:=true;
或 treeview1.selected:=treeview1.items[i];
三。设置TreeView结点的图形
1. 设置TreeView的images属性为已存在的images对象
treeview1.images:=imagelist1;
2. 在加入结点后执行:
var anode:TTreeNode; begein anode:=Treeview1.add(nil,'item1'); anode.imageindex:=0; {结点未选中时显示的图标} anode.selectedindex:=1; {结点选中时显示的图标} end 3. 如果结点图形在改变后未发生变化,可以执行: treeview1.refresh;
四。如何批量处理TreeView结点
使用TreeView的items属性的BeginUpdate和EndUpdate方法,例:
TreeView1.items.BeginUpdate; for i:=0 to TreeView1.items.count-1 do begin file ://将每个结点的文字改成为小写字母 TreeView1.items[i].text:=lowercase(TreeView1.items[i].text); end; TreeView1.items.EndUpdate;
{判断左键按下并且鼠标点在一个结点上开始实现拖拽} if ( Button = mbLeft ) and ( htOnItem in Treeview1.GetHitTestInfoAt( X, Y ) ) then begin Treeview1.BeginDrag( False ); end; end;
{鼠标拖动执行语句} procedure TForm1.Treeview1DragOver( Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var Node : TTreeNode; begin if Source = Treeview1 then begin Node := Treeview1.GetNodeAt( X, Y ); {取当前结点} if Node <> nil then {当前结点不为空才能实现拖拽,accept:=true}
Accept := true; end; end;
{鼠标释放时执行的语句} procedure TForm1.Treeview1DragDrop( Sender, Source: TObject; X, Y : Integer ); var TempNode : TTreeNode; AttachMode : TNodeAttachMode; begin if Treeview1.Selected = nil then Exit;