当前位置: 代码迷 >> VFP >> TreeView 控件 如何展开所有节点
  详细解决方案

TreeView 控件 如何展开所有节点

热度:2693   发布时间:2013-02-26 00:00:00.0
TreeView 控件 怎么展开所有节点
又怎么收缩所有节点呢

另外 怎么获取父节点的key?

node.key 本节点的值
node.relative 提示unknown name

------解决方案--------------------------------------------------------
加入数据到 TreeView 控件中
在表单中添加一个过程:DrawTree,它的核心代码如下:
LOCAL XNODE,XNODE1
WITH This.treeview
SELECT DEPARTMENT
SCAN ALL
XNODES=.NODES.ADD(,,'DEP'+ALLTR(STR(DEPARTMENT.DEPART_ID,5)),;
ALLTR(DEPARTMENT.DESC),1)
XNODES.EXPANDEDIMAGE=2 &&该节点展开时,该节点用的图标。
SELECT EMPLOYEE
SCAN FOR EMPLOYEE.DEPART_ID=DEPARTMENT.DEPART_ID
IF MANGER
XNODE1=.NODES.ADD(XNODES,4,'EMP'+ALLTR(STR(EMPLOYEE.EMP_ID,5)),;
ALLTR(EMPLOYEE.LAST_NAME)+" "+ALLTR(EMPLOYEE.FIRST_NAME),3,4)
XNODE1.BOLD=.T. &&部门负责人用粗体显示。
ELSE
.NODES.ADD(XNODES,4,'EMP'+ALLTR(STR(EMPLOYEE.EMP_ID,5)),;
ALLTR(EMPLOYEE.LAST_NAME)+" "+ALLTR(EMPLOYEE.FIRST_NAME),3,4)
ENDIF
ENDSCAN
XNODES.EXPANDED=.T. &&展开该节点
ENDSCAN
ENDWITH
这里有一个十分重要的方法:ADD(orelative,irelationship,ckey,ctext,iimage,iselectedimage),它的作用是:添加一个节点到 TreeView 空间中。
orelative:可选参数。指定已经存在的节点对象,它与 relationship 参数联合使用可以设定新添加控件与原有控件的关系。省略该参数表明新添加的节点是根级节点。
irelationship:可选参数。它与 relative 参数联合使用可以设定新添加控件与原有控件的关系,默认是下一个兄弟节点。
ckey:可选参数。设定该参数将便于对 TreeView 各节点的控制,单在每一个 TreeView 控件中,不可以有两个节点使用同一个 key。key是字符型的属性,但经验告诉我们不要以数字作为 key 的开头字符。
ctext:必填参数。在节点中显示的字符串。
iimage:可选参数。节点图标,它的取值来源于imagelist空间的图片索引。
iselectedimage:可选参数。节点被选中时显示的图标,它的取值来源于imagelist空间的图片索引。
下面我们再来看一下irelationship参数的取值情况:
0:第一个。新添加的节点放在 orelative 节点的所有同级节点的前面(兄弟关系)。
1:最后一个。新添加的节点放在 orelative 节点的所有同级节点的最后(兄弟关系)。
2:下一个。新添加的节点放在 orelative 节点的后面(兄弟关系)。
3:前一个。新添加的节点放在 orelative 节点的前面(兄弟关系)。
4:子节点。新添加的节点放在 orelative 节点的下级(父子关系)。 
在上面的代码中,我们执行了两个 scan 循环。外面的循环是针对department表的,这里很重要的是记录下每一个部门节点对象,并以它作为产生员工节点的依据:

------解决方案--------------------------------------------------------
SQL code
假设你的树控件的 Name 值为 OleTreeView5展开所有节点:m.lnTreeCount= Thisform.OleTreeView5.Nodes.CountFor m.lnI=1 To m.lnTreeCount    Thisform.OleTreeView5.Nodes(m.lnI).Expanded=.T.    && 展开节点Endfor折叠所有节点m.lnTreeCount= Thisform.OleTreeView5.Nodes.CountFor m.lnI=1 To m.lnTreeCount    Thisform.OleTreeView5.Nodes(m.lnI).Expanded=.F.    && 折叠节点Endfor
  相关解决方案