以文本方式查看主题 - 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编辑过]
|