Foxtable(狐表)用户栏目专家坐堂 → 【分享】根据数据表用代码生成任务栏页面及任务内容,多大60个任务,怎么实现点对应的任务内容后,打开对应窗体名称的窗体(因数量达60以上,逐一绑定添加有点不现实)。


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

主题:【分享】根据数据表用代码生成任务栏页面及任务内容,多大60个任务,怎么实现点对应的任务内容后,打开对应窗体名称的窗体(因数量达60以上,逐一绑定添加有点不现实)。

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【分享】根据数据表用代码生成任务栏页面及任务内容,多大60个任务,怎么实现点对应的任务内容后,打开对应窗体名称的窗体(因数量达60以上,逐一绑定添加有点不现实)。  发帖心情 Post By:2020/4/18 20:57:00 [只看该作者]

根据数据表用代码生成任务栏页面及任务内容,多大60个任务,怎么实现点对应的任务内容后,打开对应窗体名称的窗体(因数量达60以上,逐一绑定添加有点不现实)。
如:点击 审看递交程序  对应打开名称为  递交申请  的窗体

【党员发展流程】当前数据内容如下:

此主题相关图片如下:11.png
按此在新窗口浏览图片

动态生成任务页面和任务内容的代码如下:
With Forms("窗口1").Controls("TopicBar1").Pages
    Dim lsts As New List(Of String)
    lsts= DataTables("党员发展流程").getvalues("任务名称")
    For Each s As String In lsts
        Dim lsts2 As New List(Of String)
        lsts2= DataTables("党员发展流程").getvalues("具体任务","任务名称='" & s & "'")
        For Each s1 As String In lsts2
            Dim p = .Add(s1,s1,"")
            Dim lsts1 As New List(Of String)
            lsts1= DataTables("党员发展流程").getvalues("子任务","任务名称='" & s & "'and 具体任务='" & s1 & "'")
            For Each s2 As String In lsts1
                p.Links.Add(s2,s2)
            Next
        Next
    Next
End With

任务栏组件  当前单击命令后连接  事件代码如下:(因对应流程节点较多达60个  每个节点对应一个窗体,如果按照如下代码写死的话,不便于后续维护,有没有办法实现代码动态对应窗体并单击后可以打开他们呢?)
Select Case e.Link.Name
    Case "1.审看递交程序"
        Forms("递交申请").open
……
End Select

经过调试,后改成如下代码:
便可直接代码动态读取对应窗体并进行显示。
Dim str As String = ""
For Each frm As WinForm.Form In forms
    str &= frm.Name & "|"
    Select Case e.Link.Name
        Case e.Link.Name
            Dim lsts As New List(Of String)
            lsts= DataTables("党员发展流程").getvalues("对应窗体名称","子任务='" & e.Link.Name & "'")
            For Each s1 As String In lsts
                If s1.Length>0 Then
                    If str.Contains(s1)=True  Then
                        Forms("" & s1 & "").open
                    End If
                End If
            Next
    End Select
Next
[此贴子已经被作者于2020/4/18 22:02:01编辑过]

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


加好友 发短信
等级:三尾狐 帖子:647 积分:5702 威望:0 精华:0 注册:2017/4/7 12:15:00
  发帖心情 Post By:2020/4/18 22:25:00 [只看该作者]

For Each frm As WinForm.Form In forms
    str &= frm.Name & "|"
next

    Select Case e.Link.Name
        Case e.Link.Name
            Dim lsts As New List(Of String)
            lsts= DataTables("党员发展流程").getvalues("对应窗体名称","子任务='" & e.Link.Name & "'")
            For Each s1 As String In lsts
                If s1.Length>0 Then
                    If str.Contains(s1)=True Then
                        Forms("" & s1 & "").open
                    End If
                End If
            Next
    End Select

感觉应该是这样吧


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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/19 21:40:00 [只看该作者]

把窗口名作为子任务的名称

动态生成任务页面和任务内容的代码如下:
With Forms("窗口1").Controls("TopicBar1").Pages
    Dim lsts As New List(Of String)
    lsts= DataTables("党员发展流程").getvalues("任务名称")
    For Each s As String In lsts
        Dim lsts2 As New List(Of String)
        lsts2= DataTables("党员发展流程").getvalues("具体任务","任务名称='" & s & "'")
        For Each s1 As String In lsts2
            Dim p = .Add(s1,s1,"")
            Dim lsts1 As New List(Of String())
            lsts1= DataTables("党员发展流程").getvalues("子任务|对应窗体名称","任务名称='" & s & "'and 具体任务='" & s1 & "'")
            For Each s2 As String() In lsts1
                p.Links.Add(s2(0) & "|" & s2(1), s2(0))
            Next
        Next
    Next
End With

然后任务栏点击事件
dim ss() as string = e.Link.Name.split("|")
if ss.length = 2 then
Forms(ss(1) ).open
end if

 回到顶部