以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自动添加ComboBox控件,一行多个  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=120946)

--  作者:sunion
--  发布时间:2018/6/26 20:28:00
--  自动添加ComboBox控件,一行多个
我想在表A的窗口1中自动添加ComboBox控件,
要求是依据“检验项目”列的内容,每个检验项目横向增加3个ComboBox控件,而且控件名称以此命名为ComboBox1,ComboBox2,以此类推。

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



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


个人测试的结果只能是一个项目横向添加一个控件,代码如何修改呢,请大神指教,谢谢

原始代码如下
Select Case  e.DataCol.Name
    Case "检验项目"
        If Forms("窗口1").Opened Then
            Dim nms As List(of String) = DataTables("表A").GetUniqueValues("","检验项目")
            Forms("窗口1").ClearControl()
            Dim cnt As Integer
            For Each nm As String In nms
                Dim chk As WinForm.Combobox
                chk = Forms("窗口1").CreateControl("lable1", ControlTypeEnum.Combobox)
              \'  chk.Text = nm
                chk.Left = 10
                chk.Top = cnt * 25 + 10
                Forms("窗口1").AddControl(chk)
                cnt = cnt + 1
            Next
        End If
End Select
[此贴子已经被作者于2018/6/26 20:33:49编辑过]

--  作者:有点蓝
--  发布时间:2018/6/26 20:52:00
--  
If Forms("窗口1").Opened Then
    Dim nms As List(of String)  = DataTables("表A").GetValues("检验项目")
    Forms("窗口1").ClearControl()
    Dim cnt As Integer
    For i As Integer = 0 To nms.Count - 1 Step 3
        For j As Integer = 0 To 2
            If i+j < nms.Count
                Dim chk As WinForm.Combobox = Forms("窗口1").CreateControl("Combobox" & (i + j), ControlTypeEnum.Combobox)
                chk.Width = 160
                chk.Text = nms(i+j)
                chk.Left = 10 + j * 180
                chk.Top = cnt * 25 + 10
                Forms("窗口1").AddControl(chk)
            Else
                Exit For
            End If
        Next
        cnt = cnt + 1
    Next
End If

--  作者:sunion
--  发布时间:2018/6/26 20:59:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.zip
代码调试的结果

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180626205938.png
图片点击可在新窗口打开查看


老师,按照这个代码调试没有到达要的效果,

需要的效果是:
A项目:这一行需要3个控件
B项目:这一行需要3个控件
C项目:这一行需要3个控件
D项目:这一行需要3个控件
E项目:这一行需要3个控件


图片点击可在新窗口打开查看此主题相关图片如下:截图20180626202333.png
图片点击可在新窗口打开查看



[此贴子已经被作者于2018/6/26 21:02:37编辑过]

--  作者:有点蓝
--  发布时间:2018/6/26 21:14:00
--  
If Forms("窗口1").Opened Then
    Dim nms As List(of String)  = DataTables("表A").GetValues("检验项目")
    Forms("窗口1").ClearControl()
    Dim cnt As Integer
    For i As Integer = 0 To nms.Count - 1
        For j As Integer = 0 To 2
            Dim chk As WinForm.Combobox = Forms("窗口1").CreateControl("Combobox" & cnt, ControlTypeEnum.Combobox)
            chk.Width = 160
            chk.Text = nms(i)
            chk.Left = 10 + j * 180
            chk.Top = i * 25 + 10
            Forms("窗口1").AddControl(chk)
        Next
        cnt = cnt + 1
    Next
End If

--  作者:sunion
--  发布时间:2018/6/26 21:17:00
--  
达到要求,完美显示,为老师点101个赞!