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


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

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

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


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
[求助]自动排列控件间距  发帖心情 Post By:2018/5/22 9:50:00 [只看该作者]

老师,
  动态添加的控件,如何能自动根据PANL 的宽高排列 控件的间距呢?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:控件间距.table



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


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2018/5/22 9:52:00 [只看该作者]

希望 每行 2或3组 多余的 另起一行

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


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


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:控件间距.table


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


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2018/5/23 6:35:00 [只看该作者]

老师,
   后续排版是手工弄(增加列填写left top)还是代码调整呢?

例如 Lable 有4个字符 如经济类型 有两个字符的 如 性别  两个都是左对齐 
可是 对应的 位置 TEXTBOX 就不对齐了,怎么写代码能让界面控件 再好看些

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


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

以下是引用blsu33在2018/5/23 6:35:00的发言:
老师,
   后续排版是手工弄(增加列填写left top)还是代码调整呢?

例如 Lable 有4个字符 如经济类型 有两个字符的 如 性别  两个都是左对齐 
可是 对应的 位置 TEXTBOX 就不对齐了,怎么写代码能让界面控件 再好看些

 

你可以先给label赋值,然后得到每个label的width属性,取最大那个width的值,然后设置各个textbox的位置,即可。


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


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2018/5/23 20:54:00 [只看该作者]

Dim lablen As Integer=DataTables("控件类型").Compute(Max(length([pouttabcolcap])),co ntrolgzid='jd0101'")

这样写不行?
[此贴子已经被作者于2018/5/23 20:55:55编辑过]

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


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

不可以这样,必须先全部取出,然后再比较的。

 

或者,你表格那里可以加入辅助列,计算每个控件的标题的字符数,那就可以直接查到字符最大的了。


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


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2018/5/23 22:38:00 [只看该作者]

老师,
  您再给看看 没对齐  另外 三行 控件 行距 能在小点怎么改  改成两行 怎么写?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:控件间距 (1).table



[此贴子已经被作者于2018/5/23 22:38:24编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/23 23:02: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("c")
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 / 2)
Dim w As Integer = (pnl.width-10) / 2
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\2)*h
    lb.left = iif(i Mod 2 = 0, 5, w)
    lb.text = dr3("pouttabcolcap").padright(len-dr3("pouttabcolcap").length) & ":"
    kj.top = 3+(i\2)*h
    kj.left = iif(i Mod 2 = 0, 5, w) + lablen
    kj.width=180
    i += 1
Next


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


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2018/6/9 21:37:00 [只看该作者]

老师,
   想要4列 两行 怎么写 下面的格式不对

For Each dr3 As DataRow In drs2
            Dim lb  = dic("lb_" & dr3("pouttabcolcap"))
            Dim kj  = dic("kj_" & dr3("pouttabcolcap"))
            lb.top = iif(i Mod 4 = 0, 5, 8+(i\4)*h)
            lb.left = iif(i Mod 4 = 0, 5, i*w+lablen)
            lb.backcolor=color.red
            lb.text = dr3("pouttabcolcap").padleft(len-dr3("pouttabcolcap").length) & ":"
            kj.top = iif(i Mod 4 = 0, 5, 8+(i\4)*h)
            kj.left = iif(i Mod 4 = 0, 5, i*w+lablen) + lablen
            kj.width=180
            i += 1
        Next


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