以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  目录树插入子节点  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190854)

--  作者:yifan3429
--  发布时间:2024/3/8 3:53:00
--  目录树插入子节点
目录树插入子节点求助老师
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:目录树插入子节点.foxdb


--  作者:有点蓝
--  发布时间:2024/3/8 8:44:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:目录树插入子节点.zip


--  作者:yifan3429
--  发布时间:2024/3/8 12:15:00
--  
Dim tr As WinForm.TreeView
Dim nd As WinForm.TreeNode
\'Dim id As Integer = nd.index
tr = e.Form.Controls("TreeView1")
tr.Nodes.Clear() \'清除现有节点

Dim dr As DataRow
\'\'\'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
dr = DataTables("表B").Find("[角色] = \'BOOS\'")
Dim Multi As String = dr("配置")
Dim drs As List(Of DataRow) = DataTables("表A").Select("[窗口] in (\'" & Multi.Replace("|", "\',\'") & "\')", "菜单")
tr.BuildTree("", "", "", "商务管理,销售管理,供应管理")   希望按照  商务管理,销售管理,供应管理  顺序控制排列
图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图
下面是随机排序
_20240308121359.png
图片点击可在新窗口打开查看
For Each drn As DataRow In drs
    If tr.Nodes.Contains(drn("菜单")) Then
        nd = tr.Nodes(drn("菜单"))
    Else
        nd = Tr.Nodes.Add(drn("菜单"), drn("菜单"))
        nd.ForeColor = Color.Red
        \'希望子节点按照表A的归属插入到一级节点下    
    End If
    nd.Nodes.Add(drn("窗口"), drn("窗口"))
Next
[此贴子已经被作者于2024/3/8 12:15:20编辑过]

--  作者:有点蓝
--  发布时间:2024/3/8 13:37:00
--  
表A增加一个排序列,select查询的时候按照这个列排序
--  作者:yifan3429
--  发布时间:2024/4/2 20:19:00
--  
Dim e = args(0)
Select Case MainTable.name 
    Case "导航" 
        If e.Node.Level = 0 Then 
            Dim Pa As WinForm.Panel
            Pa = Forms("菜单_工作台").CreateControl("lable1", ControlTypeEnum.Panel)
            Pa.Name = "Pa"
            Pa.Width = 500
            Pa.Height = 270
            Pa.Left = (Forms("菜单_工作台").Width - Pa.Width) / 2
            Pa.Top = (Forms("菜单_工作台").Height - Pa.Height) / 2
            Pa.BackColor = Color.Wheat
            Forms("菜单_工作台").AddControl(Pa) 
                               
            Dim dr As DataRow
            \'\'\'否则在产品表查找同名的产品行,将找到的行赋值给变量dr\'\'\' 
            If User.Type = UserTypeEnum.Developer Then \'只有开发者才加载表C
                Forms("目录树").Controls("Button1").Text = "开发者 _ 目录" 
                dr = Rolesdt.SQLFind("[角色名称] = \'开发者\'")
                If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
                    Dim zcdd As WinForm.Button
                    Dim Multi As String = dr("布局_PC功能")
                    Dim newMulti As String = "(\'" & Multi.Replace("|", "\',\'") & "\')" 
                    Dim drs As List(Of DataRow) = cdwdt.Select("[主窗] in " & newMulti, "菜单排序")
                    For Each drn As DataRow In drs
                        Dim Value As String = drn("布局_PC功能") 
                        Dim sps() As Char = {"|"}
                        Dim Names() As String = Value.Split(sps)
                        Dim s As Integer = 2
                        Dim t As Integer = 5
                        For i As Integer = 0 To Names.length - 1
                            If i <> 0 Then
                                If i Mod 10 = 0 Then
                                    s = 2
                                    t = t + 81.9
                                Else
                                    s = s + 72.9
                                End If
                            End If
                            Dim nm As String = Names(i)
                            zcdd = e.Form.CreateControl(nm, ControlTypeEnum.Button)
                            \'            zcdd.Theme = "(none)" \'去掉原来的样式
                            zcdd.Font = New Font("宋体", 9, FontStyle.Regular)
                            zcdd.Text = nm & vbcrlf & "***" & vbcrlf & "条"
                            zcdd.name = nm
                            zcdd.Width = 72
                            zcdd.Height = 81
                            zcdd.Left = s + 8
                            zcdd.Top = t + 2 
                            zcdd.BorderSize = 0 
                            Forms("菜单_工作台").Controls("Pa").AddControl(zcdd)
                            zcdd.ToolTip = zcdd.Text \'动态提示
                        Next 
                    Next
                End If 
            End If
        Else
        End If 
End Select

还是目录树的原理 想用Button控件显示 请教老师 怎么做
[此贴子已经被作者于2024/4/2 20:33:29编辑过]

--  作者:有点蓝
--  发布时间:2024/4/2 20:23:00
--  
没看懂,截图说明一下
--  作者:yifan3429
--  发布时间:2024/4/2 20:34:00
--  
如图 原来用节点显示的数据
现在想用按钮显示 
根据角色分类显示
 
图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图_20240402203245.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2024/4/2 20:38:20编辑过]

--  作者:有点蓝
--  发布时间:2024/4/2 20:47:00
--  
不就是i这种用法吗:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=190802&skin=0
--  作者:yifan3429
--  发布时间:2024/4/2 20:55:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:目录树插入子节点.foxdb


案例
[此贴子已经被作者于2024/4/2 20:55:27编辑过]

--  作者:有点蓝
--  发布时间:2024/4/2 21:06:00
--  
If e.Node.Level = 0 Then 
    Forms("菜单按钮").Show

for each dr as datarow in DataTables("表A").select("[菜单] = \'" & e.Node.Name & "\'")
添加按钮的代码比如
zcdd = e.Form.CreateControl(dr("窗口"), ControlTypeEnum.Button) 
……
next
end if