?'===功能:?根据关键字来得到图标的路径=======================
?'===参数:?imgkey??图标的关键字,或是索引。索引从1开始
?function images(byval imgkey)
??dim i
??images = ""
??if imgkey = "" then exit function
??if isnumeric(imgkey) = true then
???if cint(imgkey) <= ubound(arrimage,2) and cint(imgkey) > 0 then
????images = me.imagepath & arrimage(1,imgkey)
???end if
??else
???for i = 1 to ubound(arrimage,2)
????if ucase(arrimage(0,i)) = ucase(imgkey) then
?????images = me.imagepath & arrimage(1,i)
?????exit for
????end if
???next
??end if
?end function
?'===end=======================================================
?
?'===动态更新各个节点前的连接线符号=============================
?function refreshimage(byref objnode)
??dim i,j
??objnode.expandstatus = objnode.expandstatus
??dim objtemp
??
??if not useconnectline then exit function
??
??for i = 1 to objnode.childrencount??'对子节点进行遍历
???set objtemp = objnode.children(i)
???for j = objnode.level to 1 step -1
????if not objtemp.parentnode is nothing then
?????set objtemp = objtemp.parentnode
?????if not objtemp.nextnode is nothing then
??????document.getelementbyid(objnode.children(i).key).rows(0).cells(j).firstchild.src = me.imagepath & "i.gif"?
?????end if
????end if
???next
???refreshimage objnode.children(i)
??next
?end function
?'===end=========================================================
?
?'===展开或收起节点
?public function expand(objnode)
??on error resume next
??dim childrencount
??dim name
??dim i
??
??
??
??childrencount = objnode.childrencount
??name = me.name
??addfromexpand = true??'在这里,如果外部在事件中给其他的节点添加了子节点,还是会出错,因此不能依赖于外部代码,还要改进
??treeview_expand name,objnode
??addfromexpand = false
??on error goto 0
??
??'===取得要显示/隐藏的最后一个接点的关键字
??dim arrindex??'定义一个存放要操作的行索引的数组
??dim firstindex,lastindex
??firstindex = document.getelementbyid(objnode.key).parentelement.parentelement.rowindex + 1
??
??dim obj
??
??redim arrindex(0)
??
??dim tm
??tm = timer()
??
??if objnode.expandstatus = 0 then
???objnode.expandstatus = 1
???if objnode.nextnode is nothing then
????set obj = objnode
????do until not obj.nextnode is nothing
?????set obj = obj.parentnode
?????if obj is nothing then exit do
????loop
????if obj is nothing then
?????lastindex = document.getelementbyid("tabtreeview").rows.length - 1
????else
?????lastindex = document.getelementbyid(obj.nextnode.key).parentelement.parentelement.rowindex -1
????end if
???else
????'===有下一个节点
????lastindex = document.getelementbyid(objnode.nextnode.key).parentelement.parentelement.rowindex -1
???end if
???
???dim strallkey?'存放所有要显示的节点的key,用“,”隔开
???strallkey = objnode.key & ","
???for i = firstindex to lastindex
????nodekey = document.getelementbyid("tabtreeview").rows(i).cells(0).firstchild.id
????if instr(strallkey,me.nodes(nodekey).parentnode.key & ",") > 0 and cbool(me.nodes(nodekey).parentnode.expandstatus) then
?????redim preserve arrindex(ubound(arrindex)+1)
?????arrindex(ubound(arrindex)) = i
?????strallkey = strallkey & nodekey & ","
????end if
???next
??elseif objnode.expandstatus = 1 then
???'收起
???objnode.expandstatus = 0
???if objnode.nextnode is nothing then
????set obj = objnode
????do until not obj.nextnode is nothing
?????set obj = obj.parentnode
?????if obj is nothing then exit do
????loop
????if obj is nothing then
?????lastindex = document.getelementbyid("tabtreeview").rows.length - 1
????else
?????lastindex = document.getelementbyid(obj.nextnode.key).parentelement.parentelement.rowindex -1
????end if
???else
????'===有下一个节点
????lastindex = document.getelementbyid(objnode.nextnode.key).parentelement.parentelement.rowindex -1
???end if
???for i = firstindex to lastindex
????redim preserve arrindex(ubound(arrindex)+1)
????arrindex(ubound(arrindex)) = i
???next
??end if
??
??dim nodekey
??
??for i = 1 to ubound(arrindex)
???nodekey = document.getelementbyid("tabtreeview").rows(arrindex(i)).cells(0).firstchild.id
???me.nodes(nodekey).displaystatus = objnode.expandstatus
??next
??
??'msgbox timer()-tm & me.nodescount
?end function
?
?
?
?
?
?
?public property get usepopupmenu()
??usepopupmenu = lpopupmenu
?end property
?public property let usepopupmenu(byval vnewvalue)
??if lpopupmenu = "" then
???document.write "
?????& "