首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

关于pb自适应各种不同的分辨率的有关问题

2012-02-19 
关于pb自适应各种不同的分辨率的问题?我用了1。新建一个窗口。为窗口写一个函数f_resize()大部分工作就在这

关于pb自适应各种不同的分辨率的问题?
我用了

1。新建一个窗口。  
   
  为窗口写一个函数f_resize()大部分工作就在这里。  
  无输入参数  
  返回值为整形:  
   
  environment env  
  integer ii_ScreenWidth,ii_ScreenHeight  
  double WRadio,HRadio,Radio  
  integer ii_WinBolderWidth,ii_WinBolderHeight  
  getenvironment(env)  
  ii_WinBolderWidth=this.width - this.WorkSpaceWidth()//取得窗体的边框宽度  
  ii_WinBolderHeight=this.height - this.WorkSpaceHeight()  
  ii_ScreenWidth=env.screenwidth  
  ii_ScreenHeight=env.screenheight  
  //compute the radio that need be resize  
   
  WRadio=ii_ScreenWidth/800 //标准认为屏幕分辨率为800*600  
  HRadio=ii_ScreenHeight/600//计算出屏幕相对800*600分辨率的变化量  
  Radio=Min(WRadio,HRadio)  
  if Radio=1.0 then //if the screen is default 800*600  
  return 0  
  end if  
  this.hide()  
  this.width=(this.width - ii_WinBolderWidth)*Radio + ii_WinBolderWidth  
  this.height=(this.height - ii_WinBolderHeight)*Radio + ii_WinBolderHeight  
  integer i  
  dragobject temp//用于取各种控件  
   
  for i=1 to upperbound(this.control)  
  temp=this.control[i]//调整大小,位置  
  temp.width=temp.width*Radio  
  temp.x=temp.x*Radio  
  temp.y=temp.y*Radio  
  temp.Height=temp.Height*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! // datawindows get zoomed  
  datawindow dw  
  dw = temp  
  dw.Object.DataWindow.zoom = 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  
  this.show()  
  return 0  
   
  函数写好以后,在窗体的OPEN事件里调用该函数即可.

这个函数 但是 怎么需要把其中的this 都换成窗口的名字才行呢 
而且dw也不随着变化

[解决办法]
你直接放到窗口的resize()里就不会了 你写函数this指的是f_resize 不是父窗口,给函数加个参数吧

readonly window类型 传窗体名,整体替换this为参数名就可以了

这个函数不改数据窗口内控件内容大小吧 感觉。。。效果不咋好
[解决办法]
做几个窗口吧,这样界面更友好。
[解决办法]
居然还有和我一样用古董级6.5混饭吃的。

楼主,该升级了。俺现在也11.5了。

想要省事,学 2# 才是正道(6。5的继承真的很汗人的说。。。)
[解决办法]
当然还有一个懒办法, 你的f_resize() 加一个window object类型的输入参数, 即:
  如果想打开 w_aaa,
则 f_resize(w_aaa) 

---------------------------
仅仅是建议,没试过,可能不行。。。

热点排行