Foxtable(狐表)用户栏目专家坐堂 → 求助:字段布局按窗口大小按比例调整宽度


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

主题:求助:字段布局按窗口大小按比例调整宽度

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


加好友 发短信
等级:三尾狐 帖子:715 积分:8574 威望:0 精华:0 注册:2011/11/13 15:49:00
求助:字段布局按窗口大小按比例调整宽度  发帖心情 Post By:2015/5/1 17:48:00 [只看该作者]

因为各屏幕分辨不同,窗体设计中的字段能否在窗口放大时自动按比例来调整宽度。

比如设计时的窗口是如下:

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

然后,按窗口最大化时,需要变成以下的效果:


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

 

下面是示例,请老师帮忙,谢谢!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:字段布局按窗品比例自动调整宽度.table


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


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2015/5/1 17:54:00 [只看该作者]

可以 就是设定个个控件的位置和大小而已
你逆向思维一下就解决了

先根据常用分辨率大小,记下每个控件合适的位置和大小数据,然后在窗体大小变化的时候调用一次这些数据来设置控件位置大小就行了.

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


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2015/5/1 17:56:00 [只看该作者]

当然你也可以通过窗体宽度作为变量,来计算每个控件大小,位置,然后设置.

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


加好友 发短信
等级:三尾狐 帖子:715 积分:8574 威望:0 精华:0 注册:2011/11/13 15:49:00
  发帖心情 Post By:2015/5/1 17:58:00 [只看该作者]

以下是引用sloyy在2015/5/1 17:56:00的发言:
当然你也可以通过窗体宽度作为变量,来计算每个控件大小,位置,然后设置.

能帮忙做下示例不,想了半天,不知从何着手,谢谢!


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


加好友 发短信
等级:三尾狐 帖子:715 积分:8574 威望:0 精华:0 注册:2011/11/13 15:49:00
  发帖心情 Post By:2015/5/1 21:29:00 [只看该作者]

自己测了一下,只想到这种办法了,放了四个面板,分别把四个字段放到这四个面板里,然后在窗口大小改变事件中设了以下代码:

 

Dim A As WinForm.Panel = e.Form.Controls("Panel2")
Dim b As WinForm.Panel = e.Form.Controls("Panel1")
Dim C As WinForm.Panel = e.Form.Controls("Panel4")
Dim D As WinForm.Panel = e.Form.Controls("Panel5")

b.SetBounds(10,30,300,80)
A.SetBounds(320,30,300,80)
C.SetBounds(630,30,300,80)
D.SetBounds(940,30,300,80)

 

效果似乎是达到了,但还是不完美,如果窗口小于1000,后面这个面板就会被盖住。要是这四个面板的左右位置能自动按窗口的大小,按设定好的比例来自动计算停靠位置,就好了。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:字段布局按窗品比例自动调整宽度.table

[此贴子已经被作者于2015/5/1 21:30:29编辑过]

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


加好友 发短信
等级:婴狐 帖子:88 积分:518 威望:0 精华:0 注册:2015/5/3 21:12:00
  发帖心情 Post By:2015/5/3 22:06:00 [只看该作者]

mark 自适应

 

Afterload事件

 

vars("width") = e.Form.width
vars("height") = e.Form.height

 

SizeChanged事件

 

For Each c As Winform.Control In e.Form.Controls
    c.Left = c.Left * (e.Form.Width / vars("width"))
    c.Top = c.Top * (e.Form.Height / vars("height"))
    c.Width = c.Width * (e.Form.Width / vars("width"))
    c.Height = c.Height * (e.Form.Height / vars("height"))
Next
msgbox(e.Form.Height / vars("height"))
vars("width") = e.Form.width
vars("height") = e.Form.height


 回到顶部