自适应屏幕分辨率的基类窗口
做一个自适应屏幕分辨率的窗口,当成一个应用程序中所有窗体的基类。这样整个程序可以很好的适应屏幕分辨率的改变。实现的原理很简单,就是在窗口打开的时候去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事件里调用该函数即可. xiexiexiexie <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]