关于生成目录树结构的类(2)

作者:yl10l 来源:动网 时间:2007-09-13 12:19:00 


 Class Tree 
   
  Public Top 
  Public Left 
  Public ExpandImage 
  Public CollapseImage 
  Public LeafImage 
  Private mszPosition 
  Private mcolChildren 
   
  Public Property Let Absolute(bData) 
  If bData Then mszPosition = "absolute" Else mszPosition = "relative" 
  End Property 
   
  Public Property Get Absolute() 
  Absolute = CBool(mszPosition = "absolute") 
  End Property 
   
  Private Sub Class_Initialize() 
  Set mcolChildren = Server.CreateObject("Scripting.Dictionary") 
  mnTop = 0 
  mnLeft = 0 
  mszPosition = "absolute" 
  End Sub 
   
  Private Sub Class_Terminate() 
  mcolChildren.RemoveAll() 
  Set mcolChildren = Nothing 
  End Sub 
   
  Public Function CreateChild(szValue) 
   
  Set CreateChild = New TreeNode 
   
  CreateChild.Value = szValue 
  CreateChild.ExpandImage = ExpandImage 
  CreateChild.CollapseImage = CollapseImage 
  CreateChild.LeafImage = LeafImage 
   
  mcolChildren.Add mcolChildren.Count + 1, CreateChild 
   
  End Function 
   
  Public Sub LoadTemplate(szFileName) 
  Dim objWorkingNode 
  Dim colNodeStack 
  Dim fsObj, tsObj 
  Dim szLine 
  Dim nCurrDepth, nNextDepth 
   
  Set colNodeStack = Server.CreateObject("Scripting.Dictionary") 
  Set fsObj = CreateObject("Scripting.FileSystemObject") 
  Set tsObj = fsObj.OpenTextFile(szFileName, 1) 
   
  nCurrDepth = 0 
  While Not tsObj.AtEndOfLine 
  nNextDepth = 1 
  szLine = tsObj.ReadLine() 
   
  If nCurrDepth = 0 Then 
  Set objWorkingNode = CreateChild(Trim(szLine)) 
  nCurrDepth = 1 
  Else 
  While Mid(szLine,nNextDepth,1) = vbTab Or Mid(szLine,nNextDepth,1) = " " 
  nNextDepth = nNextDepth + 1 
  WEnd 
   
  If nNextDepth > 1 Then szLine = Trim(Mid(szLine,nNextDepth)) 
   
  If szLine <> "" Then 
  If nNextDepth > nCurrDepth Then 
  If colNodeStack.Exists(nCurrDepth) Then 
  Set colNodeStack.Item(nCurrDepth) = objWorkingNode 
  Else 
  colNodeStack.Add nCurrDepth, objWorkingNode 
  End If 
   
  Set objWorkingNode = objWorkingNode.CreateChild(szLine) 
   
  nCurrDepth = nCurrDepth + 1 
  ElseIf nNextDepth <= nCurrDepth Then 
   
  If nNextDepth > 1 Then 
   
  nNextDepth = nNextDepth - 1 
  While Not colNodeStack.Exists(nNextDepth) And nNextDepth > 1 
  nNextDepth = nNextDepth - 1 
  WEnd 
   
  Set objWorkingNode = colNodeStack.Item(nNextDepth) 
  Set objWorkingNode = objWorkingNode.CreateChild(szLine) 
   
  nNextDepth = nNextDepth + 1 
  Else 
  Set objWorkingNode = CreateChild(szLine) 
  End If 
   
  nCurrDepth = nNextDepth 
  End If 
  End If 
   
  End If 
  WEnd 
   
  tsObj.Close() 
  Set tsObj = Nothing 
  Set fsObj = Nothing 
   
  colNodeStack.RemoveAll() 
  Set colNodeStack = Nothing 
   
  End Sub 
 Public Sub Draw() 
   
  AddClientScript() 
   
  Response.Write "<div id=""treectrl"" style=""left: " & Left & "px; top: " & Top & "px; position: " & mszPosition & ";"">" & vbCrLf 
  Response.Write "<form name=""treectrlfrm"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """ method=""get"">" & vbCrLf 
  Response.Write "<table border=""0"">" & vbCrLf 
  Response.Write "<tr><td>" & vbCrLf 
   
  For Each ChildNode In mcolChildren.Items 
  ChildNode.Draw() 
  Next 
   
  Response.Write "</td></tr>" & vbCrLf 
  Response.Write "</table>" & vbCrLf 
   
  Response.Write "<input type=""hidden"" name=""togglenode"" value="""">" & vbCrLf 
  Response.Write "</form>" & vbCrLf 
  Response.Write "</div>" & vbCrLf 
   
  End Sub 
   
  Private Sub AddClientScript() 
  %> 
  <script language="JavaScript"> 
   
  function expandNode(szNodeName) 
  { 
  if(document.layers != null) { 
  document.treectrl.document.treectrlfrm.togglenode.value = szNodeName; 
  document.treectrl.document.treectrlfrm.submit(); 
  } 
  else { 
  document.all["treectrlfrm"].togglenode.value = szNodeName; 
  document.all["treectrlfrm"].submit(); 
  } 
  } 
   
  function collapseNode(szNodeName) 
  { 
  if(document.layers != null) { 
  document.treectrl.document.treectrlfrm.elements[szNodeName].value = -1; 
  document.treectrl.document.treectrlfrm.submit(); 
  } 
  else { 
  document.treectrlfrm.elements[szNodeName].value = -1; 
  document.treectrlfrm.submit(); 
  } 
  } 
   
  </script> 
  <% 
  End Sub 
   
  End Class 
   
  %> 


 

标签:
0
投稿

猜你喜欢

  • xhtml有哪些块级元素

    2009-12-06 11:58:00
  • python实现维吉尼亚加密法

    2023-06-12 23:19:21
  • 教你用Python写一个植物大战僵尸小游戏

    2021-07-19 22:59:37
  • Python判断是否json是否包含一个key的方法

    2023-02-25 02:58:40
  • python文件读取失败怎么处理

    2023-05-06 17:14:46
  • Python+Django搭建自己的blog网站

    2022-02-24 16:32:45
  • 详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

    2022-05-10 01:18:53
  • bootstrap flask登录页面编写实例

    2024-04-16 08:49:19
  • CentOS 7中安装mysql server的步骤分享

    2024-01-20 13:33:56
  • 解决Golang中goroutine执行速度的问题

    2023-08-25 20:12:12
  • Oracle的约束介绍与约束维护

    2024-01-28 04:19:05
  • 菜鸟课堂:MSSQL的安全设置问题解答

    2009-10-29 13:22:00
  • 10分钟教你用Python实现微信自动回复功能

    2021-03-14 04:04:47
  • Python中操作文件之write()方法的使用教程

    2023-12-29 06:06:13
  • Python collections.deque双边队列原理详解

    2022-02-21 04:25:00
  • 详解Go语言中的内存对齐

    2024-04-25 15:08:28
  • TensorFlow2基本操作之合并分割与统计

    2022-01-01 21:47:39
  • 利用Python实现某OA系统的自动定位功能

    2021-05-26 02:27:46
  • php过滤器使用详解

    2023-06-13 01:52:23
  • asp自动补全html标签自动闭合(正则表达式)

    2013-06-01 20:01:59
  • asp之家 网络编程 m.aspxhome.com