自己写了一套程序,采用菜单+目录树操作的结构,怎么样把菜单的结构按菜单的层次,还有对应启动的模块读到目录树中去啊(已经把菜单的内容写到一个数据库中了,但没有读到菜单的层次)

解决方案 »

  1.   

    菜单可能有3级
     a---
         a1
         a2
           ---b1
           ---b2
      

  2.   

    数据表:菜单名,子层次,父层次,模块名
             a       1       0       X1
             b       1       0       X2
             a1      2       1       X3
             b1      3       2       X4
      

  3.   

    我个人是这样写的:
    '*************************************************************************
    '过程作用:    从数据库中读取树型结构内容
    '传入参数:    ObjTreeView:树型控件对象,StrDirName:根目录名称,StrTableName:数据中的表名称,LngDirIcon:根目录图标,LngSubIcon:子节点图标.
    '输    出:  无
    '建立日期:    2005/02/20
    '特殊说明:    无
    '*************************************************************************
    Public Sub ShowTreeText(ByVal ObjTreeView As Object, ByVal StrDirName As String, ByVal StrTableName As String, ByVal LngDirIcon As Long, ByVal LngSubIcon As Long)
    '    On Error Resume Next
        Dim RecShowTree As New ADODB.Recordset
        Dim StrTreeKey As String
        Dim TreeNodes As Node
        Dim I As Long, M As Long
        
        ObjTreeView.Nodes.Clear
        Set TreeNodes = ObjTreeView.Nodes.Add(, , "Fixup", StrDirName, LngDirIcon)
        
        M = 1
        StrTreeKey = "0"
        Do While M > 0
            RecShowTree.Open "SELECT TreeRelative,TreeKey,TreeText FROM " & StrTableName & " WHERE TreeRelative IN (" & StrTreeKey & ")", PubConTable, adOpenStatic, adLockReadOnly, adCmdText
            If RecShowTree.RecordCount > 0 Then
                StrTreeKey = ""
                For I = 1 To RecShowTree.RecordCount
                    If RecShowTree!TreeRelative = 0 Then
                        Set TreeNodes = ObjTreeView.Nodes.Add("Fixup", 4, "0" & Str(RecShowTree!TreeKey), RecShowTree!TreeText, LngSubIcon)
                    Else
                        Set TreeNodes = ObjTreeView.Nodes.Add("0" & Str(RecShowTree!TreeRelative), 4, "0" & Str(RecShowTree!TreeKey), RecShowTree!TreeText, LngSubIcon)
                    End If
                    If StrTreeKey = "" Then
                        StrTreeKey = RecShowTree!TreeKey
                    Else
                        StrTreeKey = StrTreeKey & "," & RecShowTree!TreeKey
                    End If
                    RecShowTree.MoveNext
                Next I
                M = 1
            Else
                M = 0
            End If
            RecShowTree.Close
        Loop
        Set RecShowTree = Nothing
    End Sub