用treeview管理单位编码,其中:sjdm1,sjdm2,sjdm3,sjdm4分别代表四级单位编码,长度为2位,c_unitname为单位名称
 
下面的代码,从表中将单位编码和名称读到treeview中:
 
treeview的init事件中:
SET SAFETY off
USE tree
SET DELETE ON
this.ImageList =thisform.o2   && o2是图片列表控件,此处与treeview关联
GOTO BOTT
WAIT CLEAR
INDEX ON sjdm1+sjdm2+sjdm3+sjdm4 TAG dm_index
 
WITH THISFORM.o
 
  *设定TREEVIEW的值
  THISFORM.LockScreen=.T.
  .TOP=.TOP+9999
  .nodes.CLEAR
  nodesx=.nodes.ADD(, , "r", "单位部门代码(root)",1)
  *一级
  SCAN FOR sjdm1>"00" and sjdm2="00" and sjdm3="00" and sjdm4="00"
 nodesx=.nodes.ADD("r",4,"A"+sjdm1, TRIM(C_unitname)+"("+sjdm1+")",1)
 nodesx.ExpandedImage=4
  ENDSCAN
  nodesx.ensurevisible
  *二级
  SCAN FOR sjdm1>"00" and sjdm2>"00" and sjdm3="00" and sjdm4="00"
 nodesx=.nodes.ADD("A"+sjdm1, 4,"B"+sjdm1+sjdm2,TRIM(C_unitname)+"("+sjdm1+sjdm2+")",2)
 nodesx.ExpandedImage=3
  ENDSCAN
  *三级
  SCAN FOR sjdm1>"00" and sjdm2>"00" and sjdm3>"00" and sjdm4="00"
 nodesx=.nodes.ADD("B"+sjdm1+sjdm2, 4,"C"+sjdm1+sjdm2+sjdm3,TRIM(C_unitname)+"("+sjdm1+sjdm2+sjdm3+")",2)
 nodesx.ExpandedImage=3
  ENDSCAN
  *四级
  SCAN FOR sjdm1>"00" and sjdm2>"00" and sjdm3>"00" and sjdm4>"00"
 nodesx=.nodes.ADD("C"+sjdm1+sjdm2+sjdm3, 4,"D"+sjdm1+sjdm2+sjdm3+sjdm4,TRIM(C_unitname)+"("+sjdm1+sjdm2+sjdm3+sjdm4+")",2)
 nodesx.ExpandedImage=3
  ENDSCAN
 
  .TOP=.TOP-9999
  THISFORM.LockScreen=.F.
  *初始位置在根节点   
   .SELECTEDITEM=.nodes.ITEM("r")
 
 
ENDWITH
*当调用 EnsureVisible 方法时,树结构将展开并滚动,以确保当前树节点在 TreeView 中可见。如果根据特定条件来选择代码中的树节点,此方法将非常有用。通过在选择节点后调用此方法,将确保用户可以看见选定节点并与之进行交互。
*注意
*如果为 TreeView.ItemHeight 属性设置的值大于树视图控件的高度,则调用此方法将导致意外的结果。