主题:[讨论]请给个根据分辨率自动调整表单大小的思路
dcyy
[专家分:180] 发布于 2006-06-21 10:55:00
如题
回复列表 (共5个回复)
沙发
zero07 [专家分:550] 发布于 2006-06-22 11:34:00
其实不复杂,在表单的INIT事件中添加一段代码,便可以适应不同解析度下运行表单使其及所含对象均可适应!就是把当前解析度与设计是的解析度做比较,有一个比系数,然后使表单及其所含对象的位置属性(LEFT,TOP)、及尺寸属性(WIDTH,HIGTH)随此系数做调整。我有详细同用代码可供使用!
我给你通用的代码,有好的经验不要不告诉 我啊!
******下面代码调整适应解析度****************************************************
Local OldHeight,OldWidth,ChangeHeight,ChangeWidth
OldHeight=600
OldWidth =800
ChangeHeight=0
ChangeWidth=0
IF SYSMETRIC(1)#OldWidth
THISFORM.Lockscreen=.F. &&详情查阅LockScreen属性
ChangeHeight=Sysmetric(2)/OldHeight
ChangeWidth=Sysmetric(1)/OldWidth
**变动表单外框
IF This.BaseClass='Form'
WITH THIS
.Height=.Height*ChangeHeight
.Width =.Width*ChangeWidth
.Top =.Top*ChangeHeight
.Left =.Left*ChangeWidth
ENDWITH
ENDIF
**变动表单内所有控件的大小和位置
FOR I =1 TO This.ControlCount
WITH THIS.Controls(I)
.Height=.Height*ChangeHeight
.Width =.Width*ChangeWidth
.Top =.Top*ChangeHeight
.Left =.Left*ChangeWidth
ENDWITH
ENDFOR
Thisform.Lockscreen=.F.
ENDIF
THISFORM.REFRESH
********调整解析度结束*****************************
板凳
crocodile3358 [专家分:390] 发布于 2008-07-20 11:28:00
我的程序是在1280*800的分辨率下做的,当我把上面的这段代码加入表单的INIT事件中,执行后可以完整地显示整个表单,但是调整计算机的分辨率为1024*768后,执行表单,页框中的照片就不能完整地显示了,这个问题我一直搞不明白,
“OldHeight=600
OldWidth =800”
这两句代码是指表单是在什么样的分辨率下工作的吗?
3 楼
北京种子乐 [专家分:3710] 发布于 2008-07-20 11:38:00
我一直认为这个问题解决不了。
拭目以待。
4 楼
0901chang [专家分:10660] 发布于 2008-07-20 12:54:00
1楼的方法可以完全解决问题,只是当控件多时,计算烦杂一些。
据说vfp9一条指令能搞店?
5 楼
homayzh [专家分:7040] 发布于 2008-07-20 14:36:00
我想,只要得到屏幕的分辨率,这个问题一定可以解决,
现在可以用 SYSMETRIC(1),SYSMETRIC(2)得到!,只要说清你的表单大小和分辨率的关系,有什么不能解决的??
坚决否定 种子老师
我来回复