以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]根据客户屏幕的分辨率,自动设置列的宽度  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189149)

--  作者:moseser
--  发布时间:2023/11/14 11:02:00
--  [求助]根据客户屏幕的分辨率,自动设置列的宽度
根据客户屏幕的分辨率,自动设置列的宽度,有没有比较快捷的方案?
--  作者:有点蓝
--  发布时间:2023/11/14 11:11:00
--  
没有什么快捷方法。只能是根据屏幕宽度,自己计算并设置。比如宽屏幕度1000,10个列平均就是100/列,然后代码可以

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

--  作者:cd_tdh
--  发布时间: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编辑过]