posts - 495,  comments - 11,  trackbacks - 0
          本程序有兩文件test.asp 和tree.asp 還有一些圖標文件。

          1. test.asp 調用類生成樹代碼如下

          <%@ Language=VBScript %>
          <html>
          <head>
          <link rel="stylesheet" href="tree.css">
          <title>tree</title>
          </head>
          <!-- #include file="tree.asp" -->
          <%

          '========================================
          ' BUILDING A TREE PROGRAMATICALLY
          '========================================
          ' This approach would be best suited for building
          ' dynamic trees using For..Next loops and such.

          Set MyTree2 = New Tree
          MyTree2.Top = 10
          MyTree2.Left = 10
          MyTree2.ExpandImage = "plus.gif"
          MyTree2.CollapseImage = "minus.gif"
          MyTree2.LeafImage = "webpage.gif"

          ' Notice the indentation used to reprensent the hierarchy
          Set Node1 = MyTree2.CreateChild("script")
          Set SubNode1 = Node1.CreateChild("server")
          Set secSubNode1 = SubNode1.CreateChild("html")
          secSubNode1.CreateChild "<A HREF=""http://127.0.0.1/"">asp</A>"
          secSubNode1.CreateChild "<A HREF=""http://127.0.0.1/"">php</A>"
          secSubNode1.CreateChild "<A HREF=""http://127.0.0.1/"">jsp</A>"

          Set SubNode2 = Node1.CreateChild("os")
          SubNode2.CreateChild "<A HREF=""#"">winnt</A>"
          SubNode2.CreateChild "<A HREF=""#"">win2000</A>"

          Set Node2 = MyTree2.CreateChild("Desktop")
          Node2.CreateChild "<A HREF=""#"">Area Code Lookup</A>"
          Node2.CreateChild "<A HREF=""#"">Arin Based Whois Search</A>"
          Node2.CreateChild "<A HREF=""#"">World Time Zone Map</A>"

          MyTree2.Draw()

          Set MyTree2 = Nothing

          %>

          </BODY>
          </HTML>


          2. tree.asp 類的定義 代碼如下

          <%

          Dim gblTreeNodeCount:gblTreeNodeCount = 1

          Class TreeNode

          Public Value
          Public ExpandImage
          Public CollapseImage
          Public LeafImage
          Public Expanded
          Private mszName
          Private mcolChildren
          Private mbChildrenInitialized

          Public Property Get ChildCount()
          ChildCount = mcolChildren.Count
          End Property

          Private Sub Class_Initialize()
          mszName = "node" & CStr(gblTreeNodeCount)
          gblTreeNodeCount = gblTreeNodeCount + 1

          mbChildrenInitialized = False
          Expanded = False
          End Sub

          Private Sub Class_Terminate()
          If mbChildrenInitialized And IsObject(mcolChildren) Then
          mcolChildren.RemoveAll()
          Set mcolChildren = Nothing
          End If
          End Sub

          Private Sub InitChildList()
          Set mcolChildren = Server.CreateObject("Scripting.Dictionary")
          mbChildrenInitialized = True
          End Sub

          Private Sub LoadState()
          If Request(mszName) = "1" Or Request("togglenode") = mszName Then
          Expanded = True
          End If
          End Sub

          Public Function CreateChild(szValue)

          If Not mbChildrenInitialized Then InitChildList()

          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 Draw()

          LoadState()

          Response.Write "<table border=""0"">" & vbCrLf
          Response.Write "<tr><td>" & vbCrLf

          If Expanded Then
          Response.Write "<a href=""javascript:collapseNode('" & mszName & "')""><img src=""" & CollapseImage & """ border=""0""></a>" & vbCrLf
          ElseIf Not mbChildrenInitialized Then
          Response.Write "<img src=""" & LeafImage & """ border=0>" & vbCrLf
          Else
          Response.Write "<a href=""javascript:expandNode('" & mszName & "')""><img src=""" & ExpandImage & """ border=""0""></a>" & vbCrLf
          End If

          Response.Write "</td>" & vbCrLf
          Response.Write "<td>" & Value & "</td></tr>" & vbCrLf

          If Expanded Then
          Response.Write "<input type=""hidden"" name=""" & mszName & """ value=""1"">" & vbCrLf

          If mbChildrenInitialized Then
          Response.Write "<tr><td> </td>" & vbCrLf
          Response.Write "<td>" & vbCrLf

          For Each ChildNode In mcolChildren.Items
          ChildNode.Draw()
          Next

          Response.Write "</td>" & vbCrLf
          Response.Write "</tr>" & vbCrLf
          End If
          End If

          Response.Write "</table>" & vbCrLf

          End Sub

          End Class


          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

          %>
          posted on 2008-06-23 15:04 jadmin 閱讀(106) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 张家口市| 睢宁县| 库伦旗| 万安县| 兴山县| 温宿县| 苗栗县| 文山县| 玛纳斯县| 临江市| 汕尾市| 西丰县| 壶关县| 原平市| 固镇县| 金寨县| 桂阳县| 龙州县| 勃利县| 禄劝| 河源市| 卢湾区| 武功县| 麻城市| 吉林市| 怀仁县| 长宁区| 清远市| 司法| 调兵山市| 明水县| 昆明市| 西乌珠穆沁旗| 兴隆县| 灯塔市| 双江| 城市| 祥云县| 惠水县| 四平市| 泗阳县|