以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  动态控件 换行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175854)

--  作者:yifan3429
--  发布时间:2022/3/22 0:03:00
--  动态控件 换行
 Dim lbl As WinForm.Button
    If dr("窗口按键_按键") < > Nothing Then       
        Dim Value As String = dr("窗口按键_按键")
        Dim sps() As Char = {"|"}
        Dim Names() As String  = Value.Split(sps)
        For i As Integer = 0 To Names.length - 1
            Dim nm As String = Names(i)
            lbl = e.Form.CreateControl(nm, ControlTypeEnum.Button)
            lbl .Text = nm
            lbl.name = nm
            lbl.Left = 40
            lbl.Top = 36
            lbl.Width = 35
            lbl.Height = 40
            e.Form.AddControl(lbl)           
        Next
    End If

上面的的代码是一字排开的,  希望每行5个超过五个就重新下面增加一排也是五个。如果是30个就是6排按钮
[此贴子已经被作者于2022/3/22 0:02:57编辑过]

--  作者:有点蓝
--  发布时间:2022/3/22 8:37:00
--  
Dim lbl As WinForm.Button
    If dr("窗口按键_按键") < > Nothing Then       
        Dim Value As String = dr("窗口按键_按键")
        Dim sps() As Char = {"|"}
        Dim Names() As String  = Value.Split(sps)
dim i as integer = 40
dim t as integer = 36
        For i As Integer = 0 To Names.length - 1
            Dim nm As String = Names(i)
            lbl = e.Form.CreateControl(nm, ControlTypeEnum.Button)
            lbl .Text = nm
            lbl.name = nm
            lbl.Left = i
            lbl.Top = t
            lbl.Width = 35
            lbl.Height = 40
            e.Form.AddControl(lbl)          
if i mod 5 = 0 then
i = 40
t = t + 40+10
else
i = i + 35 + 10
end if
        Next
    End If

--  作者:yifan3429
--  发布时间:2022/3/22 20:04:00
--  
 If dr("窗口按键_功能菜单") < > Nothing Then
        Dim Value As String = dr("窗口按键_功能菜单")
        Dim sps() As Char = {"|"}
        Dim Names() As String  = Value.Split(sps)
        Dim i1 As Integer = 36
        Dim t As Integer = 40
        For i As Integer = 0 To Names.length - 1
            Dim nm As String = Names(i)
            lbl = e.Form.CreateControl(nm, ControlTypeEnum.Button)
            lbl .Text = nm
            lbl.name = nm
            lbl.Left = i * (36)
            lbl.Top = t
            lbl.Width = 35
            lbl.Height = 40
            e.Form.AddControl(lbl)
            If i Mod 5 = 0 Then
                i1 = 36
                t = t + lbl.Height + 10
                \'Else
                \'i = i1 + 35
            End If
        Next
    End If

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




--  作者:有点蓝
--  发布时间:2022/3/22 20:23:00
--  
        For i As Integer = 0 To Names.length - 1
            Dim nm As String = Names(i)
            lbl = e.Form.CreateControl(nm, ControlTypeEnum.Button)
            lbl .Text = nm
            lbl.name = nm
            lbl.Left = i1
            lbl.Top = t
            lbl.Width = 35
            lbl.Height = 40
            e.Form.AddControl(lbl)
            If i Mod 5 = 0 Then
                i1 = 36
                t = t + lbl.Height + 10
                Else
                i1 = i1 + 35
            End If
        Next
    End If
--  作者:yifan3429
--  发布时间:2022/3/23 2:20:00
--  
 Dim s As Integer = 1
        Dim t As Integer = 40
        For i As Integer = 0 To Names.length - 1
            Dim nm As String = Names(i)
            lbl = e.Form.CreateControl(nm, ControlTypeEnum.Button)
            lbl .Text = nm
            lbl.name = nm
            lbl.Left = s
            lbl.Top = t
            lbl.Width = 35
            lbl.Height = 40
            e.Form.AddControl(lbl)
            If i Mod 5 = 0 Then
                s = 2
                t = t + lbl.Height + 2
               Else
                s = s + 35
            End If
        Next

老师,还有一个缺陷,调了几次都不行,就是第一排只有一个,应该是5个才对
    End If
图片点击可在新窗口打开查看此主题相关图片如下:22.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2022/3/23 2:21:09编辑过]

--  作者:有点蓝
--  发布时间:2022/3/23 8:37:00
--  
If i Mod 5 = 0 Then
改为

If i > 1 andalso i Mod 5 = 0 Then

--  作者:yifan3429
--  发布时间:2022/3/23 10:20:00
--  
 又会多一个出来图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:杜莎夫人.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2022/3/23 11:18:00编辑过]

--  作者:有点蓝
--  发布时间:2022/3/23 10:22:00
--  
            e.Form.AddControl(lbl)
if i = 0 then 
s = s + 35
else
            If i Mod 5 = 0 Then
                s = 2
                t = t + lbl.Height + 2
               Else
                s = s + 35
            End If
end if
        Next

--  作者:yifan3429
--  发布时间:2022/3/23 11:19:00
--  
第一排会多一个出来
图片点击可在新窗口打开查看此主题相关图片如下:杜莎夫人.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2022/3/23 11:34:00
--  
For i As Integer = 0 To Names.length - 1
    If i <> 0 Then
        If i Mod 5 = 0 Then
            s = 2
            t = t + lbl.Height + 2
        Else
            s = s + 35
        End If
    End If
    Dim nm As String = Names(i)
    lbl = e.Form.CreateControl(nm, ControlTypeEnum.Button)
    lbl .Text = nm
    lbl.name = nm
    lbl.Left = s
    lbl.Top = t
    lbl.Width = 35
    lbl.Height = 40
    e.Form.AddControl(lbl)
Next