以前总是循环展开,此刻有这个属性,,就简单多了
RzTreeView_DWDept.FullExpand; 这样就可以全部 展开了。
还有一个问题,设置节点选中
RzTreeView_DWDept.SetFocus;
if RzTreeView_DWDept.Selected = nil then
RzTreeView_DWDept.Selected := RzTreeView_DWDept.Items.Item[0];
这个的重点是 RzTreeView_DWDept.SetFocus; 如果当前焦点没有在树上,你怎么设置都不起感化。
**************************************************************
.1.添加、删除、改削节点:
静态的要领可以在设计时通过Items的编纂器设置各节点的内容。
在添加和删除前必需保证有节点当选中(Treeview.Selected = nil)
用AddFirst, AddFirstChild, AddChild等先添加根节点,如Treeview.Items.AddFirst( nil, ‘Root‘);
然后以此为根本,添加此项的子节点。
删除节点
Treeview.Selected.Delete
编纂节点内容
Treeview.Selected.EditText
注意:由于根节点没有父节点 (TTreeNode.Parent= nil)
别的,在多量量添加数据到Treeview中时最好使用
TreeView.Items.BeginUpdate;
添加节点
TreeView.Items.EndUpdate
这样能加快显示速度。
2.在节点上添加图象
Treeview中几个与图象相关的属性:
SelectedIndex:当节点当选中时在TimageList 中选什么样的图象
OverlayIndex:选那副图象作为掩图(一幅图象透明地显示在另一幅图象的前面),好比一个节点不成用时加一副X图象在其前面。
ImageIndex:在常态时选用的图的序号
StateIndex: 在StateImages这个ImageList中对应的序号,-1时不显示图象
对照范例的,象在文件打点器中的所显示的一样,Treeview控件在节点之前也可以显示图象。在Form中安排一ImageList控件,插手几个图 片,分袂被Index为0,1,…在Treeview的Image属性项填入你所插手的ImageList的控件名称。TreeNode的 ImageIndex暗示节点未当选中时(Selected=nil)的图片序号,SelectedIndex暗示节点当选中时图片序号。
3.关于Level
Level的观点可以用下图暗示:
Level0 Level1 Level2
4.排序
SortType决定什么时候进行排序;
TreeView.AlphaSort对节点进行排序,如果不能满足要求,你可以界说本身的CustomSort要领。
5.Drag&Drop操纵,与标准的拖放操纵使用要领一样
下面是我写的一个TREEVIEW小措施的代码
var rootnode,subnode,personnode,matenode:ttreenode;
i,j,k:integer;
begin
rootnode:=tv1.items.add(nil,‘公司‘);
qrymaster.Close;
qrymaster.sql.add(‘select * from master‘);
qrymaster.Open;
qrymaster.First;
for i:=0 to qrymaster.RecordCount-1 do
begin
subnode:=tv1.Items.Addchild(rootnode,qrymaster.FieldByName(‘company‘).AsString);
//原形:rootnode=tv1.items.add(nil,string);
// rootnode.ImageIndex :=0;
// rootnode.stateIndex =0;
qrysub.Close;
qrysub.SQL.clear;
qrysub.SQL.Add(‘select * from submaster where companyid=:dd‘);
qrysub.ParamByName(‘dd‘).asinteger:=qrymaster.FieldByName(‘companyid‘).asinteger;
qrysub.Open;
qrysub.First;
for j:=0 to qrysub.RecordCount-1 do
begin
personnode:=tv1.Items.AddChild(subnode,qrysub.FieldByName(‘personname‘).AsString);
// subnode.ImageIndex :=-1;
// subnode.StateIndex :=-1;
qrymate.close;
qrymate.sql.clear;
qrymate.sql.add(‘select * from comunication where personid=:personid‘);
qrymate.parambyname(‘personid‘).asinteger:=qrysub.fieldbyname(‘personid‘).asinteger;
qrymate.open;
for k:=0 to qrymate.recordcount-1 do
begin
matenode:=tv1.items.addchild(personnode,qrymate.fieldbyname(‘name‘).asstring);
qrymate.next;
end;
qrysub.Next;
end;
qrymaster.Next;
end;
end;