Foxtable(狐表)用户栏目专家坐堂 → 自动添加ComboBox控件,一行多个


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

主题:自动添加ComboBox控件,一行多个

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


加好友 发短信
等级:童狐 帖子:241 积分:2569 威望:0 精华:0 注册:2018/1/11 14:52:00
自动添加ComboBox控件,一行多个  发帖心情 Post By:2018/6/26 20:28:00 [只看该作者]

我想在表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编辑过]

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:241 积分:2569 威望:0 精华:0 注册:2018/1/11 14:52:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:241 积分:2569 威望:0 精华:0 注册:2018/1/11 14:52:00
  发帖心情 Post By:2018/6/26 21:17:00 [只看该作者]

达到要求,完美显示,为老师点101个赞!

 回到顶部