Foxtable(狐表)用户栏目专家坐堂 → [求助]自动排列控件间距


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

主题:[求助]自动排列控件间距

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/10 23:23:00 [只看该作者]

Dim e = args(0)
Dim pnl = args(1)
Dim code As String = "dim frm = args(0)" & vbcrlf
code &= "dim pnl = args(1)" & vbcrlf
code &= "dim txt " & vbcrlf
Dim drs2 As List (of DataRow)=DataTables("控件类型").Select("controlgzid is not null")
If drs2 IsNot Nothing Then
    For Each dr2 As DataRow In drs2
        code &= "txt=frm.CreateControl(" & """lb_" & dr2("pouttabcolcap") &  """, ControlTypeEnum.Label)" & vbcrlf
        code &= "pnl.addControl(txt)" & vbcrlf
        code &= "txt=frm.CreateControl(""kj_" & dr2("pouttabcolcap") & """, ControlTypeEnum." & dr2("bindingtype")  & ")" & vbcrlf
        code &= "pnl.addControl(txt)" & vbcrlf
    Next
End If
code &= "return txt"
MessageBox.Show(code)
Functions.remove("test")
Functions.Add("test",Code)
Functions.Complie()
Functions.Execute("test", e.form, pnl)
Dim h As Integer = (pnl.height-10) / math.Ceiling(drs2.count / 4)
Dim w As Integer = (pnl.width-10) / 4
Dim i As Integer = 0
Dim lablen As Integer=0
Dim len As Integer = 0
For Each dr3 As DataRow In drs2
    Dim lb As WinForm.Label = e.Form.Controls("lb_" & dr3("pouttabcolcap"))
    lb.AutoSize = True
    lb.text = dr3("pouttabcolcap") & ":"
    If lablen<lb.width Then
        lablen=lb.width
        len= Encoding.default.getbytes(dr3("pouttabcolcap")).length
    End If
Next
msgbox(lablen)
For Each dr3 As DataRow In drs2
    Dim lb As WinForm.Label = e.Form.Controls("lb_" & dr3("pouttabcolcap"))
    Dim kj As WinForm.control = e.Form.Controls("kj_" & dr3("pouttabcolcap"))
    kj.BindingField=dr3("pouttabcol")
    lb.top = 3+(i\4)*h
    lb.left = iif(i Mod 4 = 0, 5, w*(i Mod 4))
    lb.text = dr3("pouttabcolcap").padright(len-dr3("pouttabcolcap").length) & ":"
    kj.top = 3+(i\4)*h
    kj.left = iif(i Mod 4 = 0, 5, w*(i Mod 4)) + lablen
    kj.width=50
    i += 1
Next

 回到顶部
总数 11 上一页 1 2