回 帖 发 新 帖 刷新版面

主题:[讨论]请给个根据分辨率自动调整表单大小的思路

如题

回复列表 (共5个回复)

沙发

其实不复杂,在表单的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   
********调整解析度结束*****************************

板凳

我的程序是在1280*800的分辨率下做的,当我把上面的这段代码加入表单的INIT事件中,执行后可以完整地显示整个表单,但是调整计算机的分辨率为1024*768后,执行表单,页框中的照片就不能完整地显示了,这个问题我一直搞不明白,
“OldHeight=600
  OldWidth =800”
这两句代码是指表单是在什么样的分辨率下工作的吗?

3 楼

我一直认为这个问题解决不了。
拭目以待。

4 楼

1楼的方法可以完全解决问题,只是当控件多时,计算烦杂一些。
据说vfp9一条指令能搞店?

5 楼

我想,只要得到屏幕的分辨率,这个问题一定可以解决,
现在可以用 SYSMETRIC(1),SYSMETRIC(2)得到!,只要说清你的表单大小和分辨率的关系,有什么不能解决的??

坚决否定 种子老师

我来回复

您尚未登录,请登录后再回复。点此登录或注册