当改变了分辨率(例如:1360X600或1280X1024)时,窗体中的控件就溢出窗体或看不到了,怎么做个模块让程序在不同的分辨率下,窗体中的控件能自动适应大小,都能在窗体中显示,请各位VB高手帮忙!谢谢
12 个解决方案
#1
之前就有一帖,跟你同问.
把几种分辨率的情况都写上(也不多),做些标识,开启窗体的时候作下判断是哪种分辨率.
把几种分辨率的情况都写上(也不多),做些标识,开启窗体的时候作下判断是哪种分辨率.
#3
'按比例改变表单内各元件的大小,
'在调用ReSizeForm前先调用ReSizeInit函数
Public Sub ResizeForm(FormName As Form)
Dim Obj As Control
Dim ScaleX As Double, ScaleY As Double
ScaleX = 800 / 1024
'保存窗体宽度缩放比例
ScaleY = 600 / 768
'保存窗体高度缩放比例
On Error Resume Next
For Each Obj In FormName
Obj.Top = Obj.Top * ScaleY
Obj.Left = Obj.Left * ScaleX
Obj.Height = Obj.Height * ScaleY
Obj.Width = Obj.Width * ScaleX
' Obj.Font.Size = Obj.Font.Size * ScaleX
Next Obj
On Error GoTo 0
End Sub
#4
在load事件中判断分辨率,在设置控件尺寸即可。
#5
我的群内好像有人问过,很简单,在Form_Resize事件里编写代码
如窗体内有一个图片框image,代码为
image1.move 500,500,me.width-1000,me.height-1000
则不管窗体大小如何改变,image都会随之缩放.这是个简单的粗略的方法,想较好的控制它的话还需要判断屏幕分辨率,不同分辨率设不同的X、Y起点,算出缩放比例,由比例再得出(X、Y)坐标.
如窗体内有一个图片框image,代码为
image1.move 500,500,me.width-1000,me.height-1000
则不管窗体大小如何改变,image都会随之缩放.这是个简单的粗略的方法,想较好的控制它的话还需要判断屏幕分辨率,不同分辨率设不同的X、Y起点,算出缩放比例,由比例再得出(X、Y)坐标.
#6
1、可以在form_resize事件中控制所有控件的大小。
2、可以用一些容器来摆放控件,这样控件就不会移动到窗体外部了。
2、可以用一些容器来摆放控件,这样控件就不会移动到窗体外部了。
#7
楼上各位,能否给出完整代码,我根据网上测试了一些,都没效果。谢谢大家了
#8
可以实现,但要写一堆代码。完整代码怎么给?你窗体的控件大小,分布谁知道啊?
其实,最简单的,就是:
你把不同分辨率下的窗体做出来(大小不同而已),记下所有控件的 Left, Top, Width, Hight 参数。当你检测到当前显示分辨率时,就对号入座。
#9
#10
一、在Form_Load事件里,使用GetSystemMetrics获得屏幕分辨率,并保存到全局变量中。
一、使用SetWindowLong和GetWindowLong子类化窗口,当屏幕分辨率变化时,系统会触发窗口的WM_GETMINMAXINFO事件,然后在此处获得新的屏幕分辨率,并计算出一个比例值,然后重新保存分辨率到全局变量中。
三、使用Form的Controls集合对象遍历窗口子控件,如果子控件为窗口控件,则使用MoveWindow调整控件位置和大小,如果为无窗口控件,则修改控件属性调整控件位置和大小。
一、使用SetWindowLong和GetWindowLong子类化窗口,当屏幕分辨率变化时,系统会触发窗口的WM_GETMINMAXINFO事件,然后在此处获得新的屏幕分辨率,并计算出一个比例值,然后重新保存分辨率到全局变量中。
三、使用Form的Controls集合对象遍历窗口子控件,如果子控件为窗口控件,则使用MoveWindow调整控件位置和大小,如果为无窗口控件,则修改控件属性调整控件位置和大小。
#11
http://topic.csdn.net/u/20090910/14/ccca0d87-205d-4ec1-b4a1-23798014eae3.html
#12
飘过
#1
之前就有一帖,跟你同问.
把几种分辨率的情况都写上(也不多),做些标识,开启窗体的时候作下判断是哪种分辨率.
把几种分辨率的情况都写上(也不多),做些标识,开启窗体的时候作下判断是哪种分辨率.
#2
#3
'按比例改变表单内各元件的大小,
'在调用ReSizeForm前先调用ReSizeInit函数
Public Sub ResizeForm(FormName As Form)
Dim Obj As Control
Dim ScaleX As Double, ScaleY As Double
ScaleX = 800 / 1024
'保存窗体宽度缩放比例
ScaleY = 600 / 768
'保存窗体高度缩放比例
On Error Resume Next
For Each Obj In FormName
Obj.Top = Obj.Top * ScaleY
Obj.Left = Obj.Left * ScaleX
Obj.Height = Obj.Height * ScaleY
Obj.Width = Obj.Width * ScaleX
' Obj.Font.Size = Obj.Font.Size * ScaleX
Next Obj
On Error GoTo 0
End Sub
#4
在load事件中判断分辨率,在设置控件尺寸即可。
#5
我的群内好像有人问过,很简单,在Form_Resize事件里编写代码
如窗体内有一个图片框image,代码为
image1.move 500,500,me.width-1000,me.height-1000
则不管窗体大小如何改变,image都会随之缩放.这是个简单的粗略的方法,想较好的控制它的话还需要判断屏幕分辨率,不同分辨率设不同的X、Y起点,算出缩放比例,由比例再得出(X、Y)坐标.
如窗体内有一个图片框image,代码为
image1.move 500,500,me.width-1000,me.height-1000
则不管窗体大小如何改变,image都会随之缩放.这是个简单的粗略的方法,想较好的控制它的话还需要判断屏幕分辨率,不同分辨率设不同的X、Y起点,算出缩放比例,由比例再得出(X、Y)坐标.
#6
1、可以在form_resize事件中控制所有控件的大小。
2、可以用一些容器来摆放控件,这样控件就不会移动到窗体外部了。
2、可以用一些容器来摆放控件,这样控件就不会移动到窗体外部了。
#7
楼上各位,能否给出完整代码,我根据网上测试了一些,都没效果。谢谢大家了
#8
可以实现,但要写一堆代码。完整代码怎么给?你窗体的控件大小,分布谁知道啊?
其实,最简单的,就是:
你把不同分辨率下的窗体做出来(大小不同而已),记下所有控件的 Left, Top, Width, Hight 参数。当你检测到当前显示分辨率时,就对号入座。
#9
#10
一、在Form_Load事件里,使用GetSystemMetrics获得屏幕分辨率,并保存到全局变量中。
一、使用SetWindowLong和GetWindowLong子类化窗口,当屏幕分辨率变化时,系统会触发窗口的WM_GETMINMAXINFO事件,然后在此处获得新的屏幕分辨率,并计算出一个比例值,然后重新保存分辨率到全局变量中。
三、使用Form的Controls集合对象遍历窗口子控件,如果子控件为窗口控件,则使用MoveWindow调整控件位置和大小,如果为无窗口控件,则修改控件属性调整控件位置和大小。
一、使用SetWindowLong和GetWindowLong子类化窗口,当屏幕分辨率变化时,系统会触发窗口的WM_GETMINMAXINFO事件,然后在此处获得新的屏幕分辨率,并计算出一个比例值,然后重新保存分辨率到全局变量中。
三、使用Form的Controls集合对象遍历窗口子控件,如果子控件为窗口控件,则使用MoveWindow调整控件位置和大小,如果为无窗口控件,则修改控件属性调整控件位置和大小。
#11
http://topic.csdn.net/u/20090910/14/ccca0d87-205d-4ec1-b4a1-23798014eae3.html
#12
飘过