Foxtable(狐表)用户栏目专家坐堂 → [求助]代码生成TabControl及其page 并嵌套下一层TabControl


  共有3083人关注过本帖树形打印复制链接

主题:[求助]代码生成TabControl及其page 并嵌套下一层TabControl

帅哥哟,离线,有人找我吗?
有点色
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/15 17:51:00 [显示全部帖子]

Dim spl As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")
Dim dt As DataTable = DataTables("窗口表")
Dim dic As new Dictionary(of String ,object)
For Each tabname As String In dt.GetValues("所属TabControl名称","","_sortkey")
    Dim tab As WinForm.TabControl
    tab = e.Form.CreateControl(tabname, ControlTypeEnum.tabcontrol)
    tab.Dock = 5
    For Each dr As DataRow In dt.Select("所属TabControl名称 = '" & tabname & "'")
        tab.TabPages.Add(dr("page名称"),dr("page名称"))
    Next
    dic.Add(tab.name, tab)
Next

Dim sp As WinForm.SplitContainer = e.Form.Controls("SplitContainer1")

For Each level As String In dt.GetValues("上层", "", "_sortkey")
    Dim fdr As DataRow = dt.find("上层 = '" & level & "'")
    If level = "无" Then
        sp.Panel2.AddControl(dic(fdr("所属TabControl名称")))
    Else
        Dim ary() As String = level.replace(" 的Page ", " ").split(" ")
        Dim page = dic(ary(0)).tabpages(ary(1))
        Dim panel As WinForm.panel
        panel = e.Form.CreateControl("pnl_" & page.name, ControlTypeEnum.panel)
        panel.Dock = 5
        panel.AddControl(dic(fdr("所属TabControl名称")))
        page.addcontrol(panel)
    End If
Next

 

你的表结构尽量改一下。


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/16 14:44:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生成页面.foxdb


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/16 16:55:00 [显示全部帖子]

Dim tab As WinForm.TabControl = args(0)
Dim dr As DataRow = args(1)
Dim dt As DataTable = dr.DataTable
Dim drs As List(of DataRow) = dt.Select("编码规则 like '" & dr("编码规则") & "%' and 编码级次 = '" & dr("编码级次")+1 & "'")
If drs.count > 0 Then
    Dim ctab As WinForm.TabControl
    ctab = tab.Form.CreateControl("mytab_" & dr("编码规则"), ControlTypeEnum.tabcontrol)
    ctab.Dock = 5
    Dim panel As WinForm.panel
    panel = tab.Form.CreateControl("mypnl_" & dr("编码规则"), ControlTypeEnum.panel)
    panel.Dock = 5
    panel.AddControl(ctab)
    For Each cdr As DataRow In drs
        ctab.TabPages.Add(cdr("编码规则"), cdr("编码名称"))
        Functions.Execute("loop", ctab, cdr)
    Next
    tab.TabPages(dr("编码规则")).AddControl(panel)
Else
    Dim tbl As WinForm.Table
    tbl = tab.Form.CreateSQLQuery("myTable" & dr("编码规则"), "Select * From {AS001权限编码} where 1=1", "") '这块表达式不让保存,不知为何?
    tbl.Dock = 5
    tab.TabPages(dr("编码规则")).AddControl(tbl)
End If

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/19 11:46:00 [显示全部帖子]

Dim tab As WinForm.TabControl = args(0)
Dim dr As DataRow = args(1)
Dim dt As DataTable = dr.DataTable
Dim drs As List(of DataRow) = dt.Select("编码规则 like '" & dr("编码规则") & "%' and 编码级次 = '" & dr("编码级次")+1 & "'")
If drs.count > 0 Then
    Dim ctab As WinForm.TabControl
    ctab = tab.Form.CreateControl("mytab_" & dr("编码规则"), ControlTypeEnum.tabcontrol)
    ctab.Dock = 5
    Dim panel As WinForm.panel
    panel = tab.Form.CreateControl("mypnl_" & dr("编码规则"), ControlTypeEnum.panel)
    panel.Dock = 5
    panel.AddControl(ctab)
    For Each cdr As DataRow In drs
        ctab.TabPages.Add(cdr("编码规则"), cdr("编码名称"))
        Functions.Execute("loop", ctab, cdr)
    Next
    tab.TabPages(dr("编码规则")).AddControl(panel)
Else
    Dim tbl As WinForm.Table
    tbl = tab.Form.CreateSQLQuery("myTable" & dr("编码规则"), "Select * From {AS001权限编码}", "") '这块表达式不让保存,不知为何?
    tbl.Dock = 5
    tab.Form.addcontrol(tbl)
    tab.TabPages(dr("编码规则")).AddControl(tbl)

End If


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/19 12:32:00 [显示全部帖子]

 先加入到窗口,在加入到tabpage。

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/19 14:11:00 [显示全部帖子]

Dim tab As WinForm.TabControl = args(0)
Dim dr As DataRow = args(1)
Dim dt As DataTable = dr.DataTable
Dim drs As List(of DataRow) = dt.Select("编码规则 like '" & dr("编码规则") & "%' and 编码级次 = '" & dr("编码级次")+1 & "'")
If drs.count > 0 Then
    Dim ctab As WinForm.TabControl
    ctab = tab.Form.CreateControl("mytab_" & dr("编码规则"), ControlTypeEnum.tabcontrol)
    ctab.Dock = 5
    Dim panel As WinForm.panel
    panel = tab.Form.CreateControl("mypnl_" & dr("编码规则"), ControlTypeEnum.panel)
    panel.Dock = 5
    panel.AddControl(ctab)
    For Each cdr As DataRow In drs
        ctab.TabPages.Add(cdr("编码规则"), cdr("编码名称"))
        Functions.Execute("loop", ctab, cdr)
    Next
    tab.TabPages(dr("编码规则")).AddControl(panel)
Else
    Dim tbl As WinForm.Table
    If tab.Form.Controls.contains("myTable" & dr("编码规则")) = False Then
        tbl = tab.Form.CreateSQLQuery("myTable" & dr("编码规则"), "Select * From {AS001权限编码}", "") '这块表达式不让保存,不知为何?
        tbl.Dock = 5
        tab.Form.addcontrol(tbl)
        tab.TabPages(dr("编码规则")).AddControl(tbl)
    Else
        tab.Form.controls("myTable" & dr("编码规则")).Table.fill("Select * From {AS001权限编码}", True)
        tab.TabPages(dr("编码规则")).AddControl(tab.Form.controls("myTable" & dr("编码规则")))      
    End If
   
End If

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/19 15:21:00 [显示全部帖子]

参考。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:属性查看.table


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/19 15:40:00 [显示全部帖子]

以下是引用blsu33在2017/6/19 15:38:00的发言:
老师 ,
让您费心了,如何能导出所有属性到EXCEL呢。

 

直接运行代码吧,如

 

Dim o = Forms("窗口1")

For Each c As object In o.Gettype.getproperties
    output.show(c.name)
Next


 回到顶部