hur.cn - 华软网

 热门搜索

窗口最大化问题

  作者:未知    来源:网络    更新时间:2019/10/7
请问如何使窗体最大化后,里面的控件依然充满整个窗体?(请附上程序代码).多谢!
------华软网友回答------
dw_1.Width=this.WorkSpaceWidth()
dw_1.Height=this.WorkSpaceHeight()
------华软网友回复------
哦,谢谢了,可能是我问错问题了,问题应该是窗口控件的自动缩放要怎么弄的?
------华软网友回复------
在窗口的open事件中,通过其control[]数组,找出在窗口内放置的全数DragObject类控件
(当遇到Tab控件和UserObject控件时,继续通过它们各自的control[]数组,找出其内部的全数DragObject类控件)
,保存所有找到的控件的原始x、y、width和height属性数据与当前窗口原始宽度和高度的比率值。
当窗口巨细调整时,
在resize事件中,根据保存的各控件的比率值重置控件的x、y、width和height属性,进而实现控件随窗口巨细的转变自动按比率放大或缩小。
------华软网友回复------
在resize事件中,根据保存的各控件的比率值重置控件的x、y、width和height属性,进而实现控件随窗口巨细的转变自动按比率放大或缩小。
------华软网友回复------
pfc貌似有个resize服务
------华软网友回复------
/*
function name: f_windowscreen
return type: integer
argument : type  name
window arwin
integer arx
integer ary
*/


//在程序窗口的OPEN事件中直接调用即可
environment env
int ii_Screenwidth,ii_Screenheight
double WRadio,HRadio,Radio
int ii_WinBolderwidth,ii_WinBolderheight
getenvironment(env)
ii_WinBolderwidth=arwin.width - arwin.workspacewidth()//取得窗体边框的宽度
ii_WinBolderheight=arwin.height - arwin.workspaceheight()
ii_Screenwidth=env.screenwidth
ii_Screenheight=env.screenheight
//************************************************************************//
//猎取需要调整的计算机分辨率**********************************************//
WRadio=ii_Screenwidth/arx //规范以为屏幕分辨率为arx*ary
HRadio=ii_Screenheight/ary//计算出屏幕相对arx*ary分辨率的转变
Radio=min(WRadio,HRadio)
if Radio=1.0 then //如果分辨率是arx*ary
return 0
end if
if (arwin.WindowType=MDIHelp!) or (arwin.WindowType=MDI!) then 
arwin.resize(arwin.workspacewidth()*Radio,arwin.workspaceheight()*Radio)
return 0
else
arwin.hide()
arwin.width=(arwin.width - ii_WinBolderwidth)*Radio + ii_WinBolderwidth
arwin.height=(arwin.height - ii_WinBolderheight)*Radio + ii_WinBolderheight
int i
dragobject temp//用于取各种控件
windowobject song[]
song[]=arwin.control[]
for i=1 to upperbound(song)
temp=arwin.control[i]//调整控件巨细和位置
temp.width=temp.width*Radio
temp.x=temp.x*Radio
temp.height=temp.height*Radio
temp.y=temp.y*Radio
choose case typeof(temp)
  case tab!
   tab mtab
   mtab=temp
   mtab.textsize=mtab.textsize*Radio//设置字体巨细
  case commandbutton!
   commandbutton cb
   cb=temp
   cb.textsize=cb.textsize*Radio
  case singlelineedit!
   singlelineedit sle
   sle=temp
   sle.textsize=sle.textsize*Radio
  case editmask!
   editmask em 
   em=temp
   em.textsize=em.textsize*Radio
  case statictext!
   statictext st
   st=temp
   st.textsize=st.textsize*Radio
  case datawindow!//get datawindow zoomen
   datawindow dw
   dw=temp
   dw.object.datawindow.zoon=string(int(Radio*100))//注意datawindow和其余控件的不同。
  case picturebutton!
   picturebutton pb
   pb=temp
   pb.textsize=pb.textsize*Radio
  case checkbox!
   checkbox cbx
   cbx=temp
   cbx.textsize=cbx.textsize*Radio
  case dropdownlistbox!
   dropdownlistbox ddlb
   ddlb=temp
   ddlb.textsize=ddlb.textsize*Radio
  case groupbox!
   groupbox gb
   gb=temp
   gb.textsize=gb.textsize*Radio
  case listbox!
   listbox lb
   lb=temp
   lb.textsize=lb.textsize*Radio
  case multilineedit!
   multilineedit mle
   mle=temp
   mle.textsize=mle.textsize*Radio
  case radiobutton!
   radiobutton rb
   rb=temp
   rb.textsize=rb.textsize*Radio
end choose
next
arwin.show()
return 0
end if
------华软网友回复------
不行啊,楼上说的...
------华软网友回复------
一个函数f_zsy(窗口),前往值any
environment env
integer ii_screenwidth,ii_screenheight
double wradio,hradio ,radio
integer ii_winbolderwidth,ii_winbolderheight,li_control,j,k
getenvironment(env)
ii_winbolderwidth=as_window.width - as_window.workspacewidth()//取得窗体的边框宽度
ii_winbolderheight=as_window.height - as_window.workspaceheight()
ii_screenwidth=env.screenwidth
ii_screenheight=env.screenheight
//compute the radio that need be resize

wradio=ii_screenwidth/1024//规范以为屏幕分辨率为1024*768
hradio=ii_screenheight/768//计算出屏幕相对1024*768分辨率的转变量
radio=min(wradio,hradio)

if radio=1.0 then //if the screen is default 800*600
return 0
end if
as_window.hide()
as_window.width=(as_window.width - ii_winbolderwidth)*radio+ii_winbolderwidth
as_window.height=(as_window.height - ii_winbolderheight)*radio+ii_winbolderheight
integer i
dragobject temp,tabtemp //用于取各种控件dragobject
string ls_objectname //rectangle不是dragobject 所以不能自顺应
li_control=upperbound(as_window.control)
for i=1 to upperbound(as_window.control)
ls_objectname=as_window.control[i].classname()

if left(ls_objectname,2)='r_' then
Rectangle ir_obj
ir_obj=as_window.control[i]
ir_obj.width=ir_obj.width*radio
ir_obj.height=ir_obj.height*radio
ir_obj.x=ir_obj.x*radio
ir_obj.y=ir_obj.y*radio
elseif  left(ls_objectname,2)='rr' then
RoundRectangle rr_obj
rr_obj=as_window.control[i]
rr_obj.width=rr_obj.width*radio
rr_obj.height=rr_obj.height*radio
rr_obj.x=rr_obj.x*radio
rr_obj.y=rr_obj.y*radio
else
temp=as_window.control[i]//调整巨细,位置

//几个按钮不需要自顺应



temp.width=temp.width*radio
temp.height=temp.height*radio
temp.x=temp.x*radio
temp.y=temp.y*radio


choose case typeof(temp)
case tab!
tab mtab
mtab=temp
//li_control=upperbound(mtab.control)
mtab.textsize=mtab.textsize*radio //设置字体

////////////////////////////////////////////////////////


for j=1 to upperbound(mtab.control)
li_control=upperbound(mtab.control[j].control)
for k =1 to upperbound(mtab.control[j].control)
ls_objectname=mtab.control[j].control[k].classname()
if left(ls_objectname,1)='r' then
//Rectangle ir_obj
ir_obj=mtab.control[j].control[k]
ir_obj.width=ir_obj.width*radio
ir_obj.height=ir_obj.height*radio
ir_obj.x=ir_obj.x*radio
ir_obj.y=ir_obj.y*radio
else
tabtemp=mtab.control[j].control[k]//调整巨细,位置
tabtemp.width=tabtemp.width*radio
tabtemp.height=tabtemp.height*radio
tabtemp.x=tabtemp.x*radio
tabtemp.y=tabtemp.y*radio

choose case typeof(tabtemp)
case tab!
tab tabtab
tabtab=tabtemp
tabtab.textsize=tabtab.textsize*radio //设置字体

case commandbutton!
commandbutton tabcb
tabcb=tabtemp
tabcb.textsize=tabcb.textsize*radio

case singlelineedit!
singlelineedit tabsle
tabsle=tabtemp
tabsle.textsize=tabsle.textsize*radio

case editmask!
editmask tabem
tabem=tabtemp
tabem.textsize=tabem.textsize*radio

case statictext!
statictext tabst
tabst=tabtemp
tabst.textsize=tabst.textsize*radio

case datawindow! //datawindows get zoomed
datawindow tabdw
tabdw=tabtemp
if tabdw.dataobject<>'' then 
tabdw.object.datawindow.zoom=string(int(radio*100)) //注意datawindow与其余控件的不同
end if

case checkbox!
checkbox tabcbx
tabcbx=tabtemp
tabcbx.textsize=tabcbx.textsize*radio

case radiobutton!
radiobutton tabrb
tabrb=tabtemp
tabrb.textsize=tabrb.textsize*radio

case picturebutton!
picturebutton tabpb
tabpb=tabtemp
tabpb.textsize =tabpb.textsize*radio

case dropdownlistbox!
dropdownlistbox tabddlb
tabddlb=tabtemp
tabddlb.textsize = tabddlb.textsize*radio


case groupbox!
groupbox tabgb
tabgb=tabtemp
tabgb.textsize=tabgb.textsize*radio

case listbox!
listbox tablb
tablb =tabtemp
tablb.textsize=tablb.textsize*radio

case multilineedit!
multilineedit tabmle
tabmle = tabtemp
tabmle.textsize = tabmle.textsize*radio

end choose
end if
next
next

//////////////////////////////////////////
case treeview!
treeview tv
tv=temp
tv.textsize=tv.textsize*radio

case commandbutton!
commandbutton cb
cb=temp
cb.textsize=cb.textsize*radio

case singlelineedit!
singlelineedit sle
sle=temp
sle.textsize=sle.textsize*radio

case editmask!
editmask em
em=temp
em.textsize=em.textsize*radio

case statictext!
statictext st
st=temp
st.textsize=st.textsize*radio

case datawindow! //datawindows get zoomed
datawindow dw
dw=temp
if dw.dataobject<>'' then 
dw.object.datawindow.zoom=string(int(radio*100)) //注意datawindow与其余控件的不同
end if


case checkbox!
checkbox cbx
cbx=temp
cbx.textsize=cbx.textsize*radio

case radiobutton!
radiobutton trb
trb=temp
trb.textsize=trb.textsize*radio

case picturebutton!
picturebutton pb
pb=temp
pb.textsize =pb.textsize*radio

case dropdownlistbox!
dropdownlistbox ddlb
ddlb=temp
ddlb.textsize = ddlb.textsize*radio

/*case tab!
tab tb
tb=temp
tb.textsize=tb.textsize*radio*/

case groupbox!
groupbox gb
gb=temp
gb.textsize=gb.textsize*radio

case listbox!
listbox lb
lb =temp
lb.textsize=lb.textsize*radio

case multilineedit!
multilineedit mle
mle = temp
mle.textsize = mle.textsize*radio

end choose
end if
next
as_window.show()
return 0

------华软网友回复------
楼上正确,学习
------华软网友回复------
先多谢了啊!

------华软网友回复------
pfc中有一个u_resize,比上面的功能要强盛~能够用一下试试      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。