共同研究PB在不同分辩率运行的问题,怎么样自适应分辩率

 所属目录:Java   |   类型:技术问答   |   时间:2007-05-21
 问题:

我有一函数,但是有两个数据窗口的时候和线条是会出错啊  
  请大家帮看一看这个代码啊  
  函数如下:  
  /*功能:自动适应分辩率  
      函数名:f_windowscreen  
      返回值:public   integer  
      参数     readonly   window   arwin   窗口名称  
              value         integer   arx     分辩率值   如:800*600  
  value         integer   ary     分辩率值  
  调用格式:f_windowscreen(arwin,800,600)    
  说明:以800*600的分辩率运行  
  */  
  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

· 网友精彩回答:

发表者:dnvcc

頂,看不懂,我是一個初學者,想看看你們的代碼。

发表者:liuyxit

还是参考一下pfc的resize服务吧。

发表者:ldy

参考深蓝

发表者:xyqiqi

pb例子上也有,挺好用的,又不出错,楼主可以参考一下。

发表者:sdhylj

接分.

发表者:kciv

搂主,您解决了,可以把如何解决告诉大家一下吗?以后可能有有遇到您这个问题的人,让他们也可以查到解决的方法吧。

.
处理 SSI 文件时出错
© 2006-2008 All Rights Reserved