根据数据表用代码生成任务栏页面及任务内容,多大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编辑过]