加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi中的TreeView

发布时间:2020-12-15 10:00:53 所属栏目:大数据 来源:网络整理
导读:以前总是循环展开,现在有这个属性,就简单多了 RzTreeView_DWDept.FullExpand; ?这样就可以全部 展开了。 还有一个问题,设置节点选中 RzTreeView_DWDept.SetFocus; if RzTreeView_DWDept.Selected = nil then ? ? ? RzTreeView_DWDept.Selected := RzTreeV
以前总是循环展开,现在有这个属性,就简单多了 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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读