发信人: nomean()
整理人: hunter__fox(2002-03-16 22:47:21), 站内信件
|
用VFP建立适用不同分辨率的菜单
程序开发者开发的菜单一般仅适用于某些特定的分辨率,如果使用者的系统 分辨率不同,将造成画面上菜单过长或过短,为解决此问题一般都开发几个分别 适应不同分辨率下的菜单,但如此一来将造成一些不必要的麻烦,下面的程序将 解决此问题。
1.首先在640*480分辨率下建立一新菜单
2.将下列代码放在复合式物件的INIT METHOD中
LOCAL OLDHEIGHT,OLDWIRTH,CHANGEHEIGHT,CHANGEWIDTH
OLDHEIGHT=640
OLDWIDTH=480
CHANGEHEIGHT=0 &&新分辨率与640*480分辨率之HEIGHT差
CHANGEWIDTH=0 &&新分辨率与640*480分辨率之WIDTH差
*SYSMETRIC(1) &&得到目前分辨率HEIGHT
*SYSMETRIC(2) &&得到目前分辨率WIDTH
IF SYSTEMETRIC(1)!=OLDHEIGHT
THISFORM.LOCKSCREEN=.T.
CHANGEHEIGHT=SYSMETRIC(1)/OLDHEIGHT
CHANGEWIDTH=SYSMETRIC(2)/OLDWIDTH
&&更改菜单外框
IF THIS.BASECLASS=“FORM"
THIS.HEIGHT=THIS.HEIGHT*CHANGEHEIGHT
THIS.WIDTH =THIS.WIDTH*CHANGEWIDTH
THIS.TOP =THIS.TOP*CHANGEHEIGHT
THIS.LEFT =THIS.LEFT*CHANGEWIDTH
ENDIF
&&逐一更改CONTAINER内的控制项
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
注:如果您预先设定最低分辨率为800*600
首先在800*600分辨率下建立一新菜单
把OLDHEIGHT=640改为OLDHEIGHT=800
把OLDWIDTH=480改为OLDWIDTH=600
-- 我颤颤地伸出手
却没能握住一丝温柔
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.101.119.121]
|
|