阿辉 发表于 2005-9-9 10:06:35

自适应屏幕分辨率的基类窗口

做一个自适应屏幕分辨率的窗口,当成一个应用程序中所有窗体的基类。这样整个程序可以很好的适应屏幕分辨率的改变。实现的原理很简单,就是在窗口打开的时候去RESIZE窗口和窗口中的控件大小,位置。参看下面的源代码,可以很容易的看懂。<BR><BR>1。新建一个窗口。<BR><BR>为窗口写一个函数f_resize()大部分工作就在这里。<BR>无输入参数<BR>返回值为整形:<BR><BR>environment env<BR>integer ii_ScreenWidth,ii_ScreenHeight<BR>double WRadio,HRadio,Radio<BR>integer ii_WinBolderWidth,ii_WinBolderHeight<BR>getenvironment(env)<BR>ii_WinBolderWidth=this.width - this.WorkSpaceWidth()//取得窗体的边框宽度<BR>ii_WinBolderHeight=this.height - this.WorkSpaceHeight()<BR>ii_ScreenWidth=env.screenwidth<BR>ii_ScreenHeight=env.screenheight<BR>//compute the radio that need be resize<BR><BR>WRadio=ii_ScreenWidth/800 //标准认为屏幕分辨率为800*600<BR>HRadio=ii_ScreenHeight/600//计算出屏幕相对800*600分辨率的变化量<BR>Radio=Min(WRadio,HRadio)<BR>if Radio=1.0 then //if the screen is default 800*600<BR>return 0<BR>end if <BR>this.hide()<BR>this.width=(this.width - ii_WinBolderWidth)*Radio + ii_WinBolderWidth<BR>this.height=(this.height - ii_WinBolderHeight)*Radio + ii_WinBolderHeight <BR>integer i<BR>dragobject temp//用于取各种控件<BR><BR>for i=1 to upperbound(this.control)<BR>temp=this.control//调整大小,位置<BR>temp.width=temp.width*Radio<BR>temp.x=temp.x*Radio<BR>temp.y=temp.y*Radio<BR>temp.Height=temp.Height*Radio<BR>choose case typeof(temp)<BR>case tab!<BR>   tab mtab<BR>   mtab=temp<BR>   mtab.textsize =mtab.textsize*Radio//设置字体<BR>case commandbutton!<BR>   commandbutton cb<BR>   cb = temp<BR>   cb.textsize =cb.textsize*Radio<BR><BR>case singlelineedit!<BR>   singlelineedit sle<BR>   sle = temp<BR>   sle.textsize=sle.textsize*Radio<BR>case editmask!<BR>   editmask em<BR>   em = temp<BR>   em.textsize =em.textsize*Radio<BR><BR>case statictext!<BR>   statictext st<BR>   st = temp<BR>   st.textsize = st.textsize*Radio <BR><BR>case datawindow! // datawindows get zoomed<BR>   datawindow dw<BR>   dw = temp<BR>   dw.Object.DataWindow.zoom = string(int(Radio*100))//注意DATAWINDOW与其它控件的不同<BR><BR>case picturebutton!<BR>   picturebutton pb<BR>   pb = temp<BR>   pb.textsize =pb.textsize*Radio<BR><BR>case checkbox!<BR>   checkbox cbx<BR>   cbx = temp<BR>   cbx.textsize =cbx.textsize*Radio<BR><BR>case dropdownlistbox!<BR>   dropdownlistbox ddlb<BR>   ddlb = temp<BR>   ddlb.textsize =ddlb.textsize*Radio<BR><BR>case groupbox!<BR>   groupbox gb<BR>   gb = temp<BR>   gb.textsize =gb.textsize*Radio<BR><BR>case listbox!<BR>   listbox lb<BR>   lb = temp<BR>   lb.textsize=lb.textsize*Radio <BR><BR>case multilineedit!<BR>   multilineedit mle<BR>   mle = temp<BR>   mle.textsize = mle.textsize*Radio<BR><BR>case radiobutton!<BR>   radiobutton rb<BR>   rb = temp<BR>   rb.textsize =rb.textsize*Radio<BR><BR>end choose<BR>next<BR>this.show()<BR>return 0<BR><BR>函数写好以后,在窗体的OPEN事件里调用该函数即可.

qq_t 发表于 2006-4-24 23:33:05

xiexiexiexie

lclqxy 发表于 2006-4-25 09:44:53

<p><font size="2"><font color="#c60a00">pb里如何把图片存到oracle的blob里</font>,如何把blob的图取出???</font></p><p>我用pb9.0和pb6.5均无法实现。代码如下:</p><p>blob blb_tmp //定义保存图片的变量</p><p>setnull(blb_tmp)</p><p>//查找图片到blob变量中<br/>selectblob sbtx into :blb_tmp<br/>from a_b<br/>where sx='123'<br/>using sqlca;<br/>f_mess(string(len(blb_tmp))) //定义函数检测是否有图片</p><p>.............</p><p>p_1.setpicture(blb_tmp) //将图片放入图片控件中显示</p><p>结果测试blob变量始终是null,自然图片控件就无法显示。但我把这个blob字段换成long raw类型就好了。这是为何?如何能读写blob类型字段。</p>
页: [1]
查看完整版本: 自适应屏幕分辨率的基类窗口

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com