2,722
社区成员
发帖
与我相关
我的任务
分享
**************************************************
*-- Class: adjust_screen
*-- ParentClass: custom
*-- BaseClass: custom
*-- Time Stamp: 10/20/10 10:15:14 AM
*
DEFINE CLASS adjust_screen AS custom
Height = 28
Width = 38
*-- 当前屏幕分辨率的宽度
sys_width=0
*-- 当前屏幕分辨率的长度
sys_height=0
*-- 设计时的屏幕宽度
design_width = 800
*-- 设计时的屏幕长度
design_height = 600
Name = "adjust_screen"
PROCEDURE adjust_controls
PARAMETERS O_CONTAIN,X_RATE, Y_RATE
LOCAL m_count,O,I
DO case
CASE INLIST(LOWER(O_CONTAIN.baseclass),'commandgroup')
m_count=o_contain.buttoncount
CASE INLIST(LOWER(O_CONTAIN.baseclass),'pageframe')
m_count=o_contain.pagecount
CASE INLIST(LOWER(O_CONTAIN.baseclass),'grid')
m_count=o_contain.columncount
OTHERWISE
m_count=o_contain.controlcount
endcase
FOR I=1 TO m_count
DO case
CASE INLIST(LOWER(O_CONTAIN.baseclass),'commandgroup')
o=o_contain.buttons[i]
CASE INLIST(LOWER(O_CONTAIN.baseclass),'pageframe')
o=o_contain.pages[i]
CASE INLIST(LOWER(O_CONTAIN.baseclass),'grid')
o=o_contain.columns[i]
OTHERWISE
o=o_contain.controls[i]
endcase
IF INLIST(LOWER(O.BASECLASS),'custom','timer')
LOOP
ENDIF
IF !INLIST(LOWER(O.BASECLASS)+SPACE(1),'page ','column ')
O.LEFT = ROUND(O.LEFT * X_RATE,0)
O.TOP = ROUND(O.TOP * Y_RATE,0)
O.WIDTH = ROUND(O.WIDTH * X_RATE,0)
O.HEIGHT = ROUND(O.HEIGHT * Y_RATE,0)
ENDIF
try
DO case
case INLIST(LOWER(O.BASECLASS)+SPACE(1),'spinner ','combobox ','textbox ','editbox ','listbox ','label ','commandbutton ','page ')
IF AT('nofontsize',o.tag)=0
O.FONTSIZE = ROUND(O.FONTSIZE * X_RATE,0)
ENDIF
case LOWER(O.BASECLASS)='column'
IF AT('nowidth',o.tag)=0
O.WIDTH=ROUND(O.WIDTH * X_RATE,0)
ENDIF
IF AT('nofontsize',o.tag)=0
O.FONTSIZE = ROUND(O.FONTSIZE * X_RATE,0)
ENDIF
IF AT('noheadersize',o.tag)=0
O.header1.fontsize= ROUND(O.header1.FONTSIZE * X_RATE,0)
ENDIF
ENDcase
IF LOWER(O.BASECLASS)='grid'
IF AT('noheaderheight',o.tag)=0
O.HEADERHEIGHT=ROUND(O.HEADERHEIGHT * Y_RATE,0)
ENDIF
IF AT('norowheight',o.tag)=0
O.ROWHEIGHT=ROUND(O.ROWHEIGHT * Y_RATE,0)
ENDIF
ENDIF
CATCH TO oerror
WAIT WINDOW '屏幕缩放错误:'+OERROR.message NOWAIT
ENDTRY
IF INLIST(LOWER(O.BASECLASS)+SPACE(1),'commandgroup ','pageframe ','page ','container ','grid ') AND AT('noresize',O.tag)=0
this.adjust_controls(O,X_RATE, Y_RATE)
ENDIF
ENDFOR
RETURN
ENDPROC
PROCEDURE refresh_control
this.sys_width=SYSMETRIC(1)
this.sys_height=SYSMETRIC(2)
IF this.design_width>=this.sys_width OR THIS.DEsign_height>=this.sys_height
RETURN
ENDIF
*!* thisform.Visible=.f.
LOCAL X_RATE,Y_RATE
X_RATE=this.sys_width / THIS.DEsign_width
Y_RATE=this.sys_height / THIS.DEsign_height
*!* IF THISFORM.WindowState<>2
THISFORM.Width= INT(THISFORM.Width * X_RATE)
THISFORM.Height= INT(THISFORM.Height * Y_RATE)
IF THISFORM.AutoCenter
THISFORM.AutoCenter=.T.
ELSE
THISFORM.Left=INT(THISFORM.Left * X_RATE)
THISFORM.Top= INT(THISFORM.Top * Y_RATE)
ENDIF
*!* ENDIF
THIS.Adjust_controls(THISFORM, X_RATE, Y_RATE)
*!* thisform.Visible=.t.
ENDPROC
ENDDEFINE
*
*-- EndDefine: adjust_screen
**************************************************