hur.cn - 华软网

 热门搜索

请问如何调整控件大小?

  作者:未知    来源:网络    更新时间:2018/7/4
在800*600分辨率下,控件大小正合适,但在1024*768时大小就不对了。请问怎么根据运行时屏幕的分辨率来自动调整控件大小?

------华软网友回答------
你去看PFC,里面有调整控件大小的功能,不过用起来好麻烦.
我是一直在用的.
------华软网友回复------
ing
------华软网友回复------
现在通用的调大小只能整体按比例调整,要的话发mail到lidsh@bizsmooth.com
------华软网友回复------
/*功能:自动适应分辩率
  函数名: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() * WRadio,arwin.workspaceheight() * HRadio)
  return 0
else
  arwin.hide()
  arwin.width  = (arwin.width  - ii_WinBolderwidth)   * WRadio + ii_WinBolderwidth
  arwin.height = (arwin.height - ii_WinBolderheight)  * HRadio + 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  * WRadio
    temp.height = temp.height * HRadio
    temp.x = temp.x * Radio
    temp.y = temp.y * Radio
 if typeof(temp) = Tab! then
f_Tabscreen(temp, arx, ary)
 end if
    choose case typeof(temp)
      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
  if dw.dataobject <> '' then
         dw.object.datawindow.zoom = string(int(Radio * 100))//注意datawindow和其他控件的不同。
  end if   
      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
这个函数可以解决你的问题      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。