Foxtable(狐表)用户栏目专家坐堂 → [求助]根据客户屏幕的分辨率,自动设置列的宽度


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

主题:[求助]根据客户屏幕的分辨率,自动设置列的宽度

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


加好友 发短信
等级:三尾狐 帖子:615 积分:5246 威望:0 精华:0 注册:2022/4/4 14:42:00
[求助]根据客户屏幕的分辨率,自动设置列的宽度  发帖心情 Post By:2023/11/14 11:02:00 [只看该作者]

根据客户屏幕的分辨率,自动设置列的宽度,有没有比较快捷的方案?

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


加好友 发短信
等级:超级版主 帖子:107873 积分:548728 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/14 11:11:00 [只看该作者]

没有什么快捷方法。只能是根据屏幕宽度,自己计算并设置。比如宽屏幕度1000,10个列平均就是100/列,然后代码可以

Tables("订单").SetColVisibleWidth("第一列|100|第2列|100......")

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


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2023/11/14 13:12:00 [只看该作者]

可以试试这个思路,没试过,知道原来屏幕宽度,和原来的列宽,比如按照1440计算的,新的屏幕宽度为1920,采用同比例计算新的屏幕的列宽,需要去完善。
参考代码:
'SizeChanged事件
If vars("width") > 0 AndAlso vars("height") > 0 AndAlso basemainform.windowstate <> 1 Then
    Dim cvs1 As String = Tables("表A").GetColVisibleWidth()
    Dim s As String = Nothing
    Dim Multi As String = cvs1
    Dim Values() As String
    Values = Multi.split("|")
    For Index As Integer = 0 To Values.Length - 1
        If Char.IsDigit(Values(Index)) Then '判断是数字
            Values(Index) = Values(Index) * 2 '先计算比例,在乘以相同比例(比例需要根据实际分辨率来计算),另外需要取整
        End If
        '    Output.Show(Values(Index))
        If s <> Nothing Then s = s & "|"
        s = s & Values(Index)
    Next
    Tables("表A").SetColVisibleWidth(s)
End If

测试了一下,是可以的,但是一定要根据不同的分辨率计算好比例,好像列宽不能设置为小数,所有取整后,最后一列建议设置为铺满整个窗口。行高也可以这样处理,但是字体不能随分辨率缩放是个难点
[此贴子已经被作者于2023/11/14 16:33:55编辑过]

 回到顶部