以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助:字段布局按窗口大小按比例调整宽度  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=67768)

--  作者:jiterp
--  发布时间:2015/5/1 17:48:00
--  求助:字段布局按窗口大小按比例调整宽度

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

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

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

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


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

 

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

 

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


--  作者:sloyy
--  发布时间:2015/5/1 17:54:00
--  
可以 就是设定个个控件的位置和大小而已
你逆向思维一下就解决了

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

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

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


--  作者:jiterp
--  发布时间: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
--  发布时间: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