您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > pb中datawindow常用技巧
pb中datawindow常用技巧一(2009-04-1617:09:07)转载▼标签:杂谈分类:PowerBuilderpb中datawindow常用技巧一1、如何让存储文件目录的列,显示图片?答:选择对应的column的displayaspicture属性为true2、如何复制grid类型的所选择的行的数据到系统剪切板?答:stringls_selectedls_selected=dw_1.Object.DataWindow.Selected.Dataclipbord(ls_selected)4、如何设置的DW底色?在DW的editsource中改变color的值5、如何将Grid风格改成自由格式?在DW的editsource中将processing=1的1改为06、要新建一个表A但风格和现有表格B风格一样,怎么将A表快速设置成表B风格?复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可7、如何实现gird风格的datawindow的多栏表头?答:添加text到header带区,并设置band属性为foreground保存,editsource修改text的x和width属性表达式如下:x=100~tinteger(describe('firstcol.x')width=100~tinteger(describe('lastcol.x'))-integer(describe('firstcol.x'))+integer(describe('lastcol.width'))8、如何过滤dddw编辑风格的显示值为指定值的记录?答:dw_1.setfilter(lookupdisplay('column_name')='+ls_display_value_your+')dw_1.filter()9、如何设置datawindow的某一列为空?答:stringls_temp[]setnull(ls_temp)dw_1.object.columnname.primary.current=ls_temp10、如何设置datawindow的单双行不同颜色间隔?答:在detail带区的color属性表达式中写上if(mod(getrow(),2)=1,rgb(255,0,0),rgb(0,255,0)),如果是当前行以第三种颜色表示,表达式如下:if(getrow()=current(),rgb(255,0,0),if(mod(getrow(),2)=1,rgb(0,0,255),rgb(0,255,0)))11、如何获取指定名称的datawindowobject?答:DWObjectldwo_use,ldwo_abcldwo_use=dw_1.Objectldwo_abc=ldwo_use.__get_attribute(t_1,FALSE)//t_1为datawindow中text对象的名称12、如何缩放datawindow的打印大小?答:dw_1.object.datawindow.zoom=150ordw_1.object.datawindow.zoom=7513、如何在已过滤后的数据基础上对datawindow进行过滤?答:dw_1.setfilter(dw_1.describe(datawindow.table.filter)+your_join+your_new_filter)dw_1.filter()14、如何在datawindow中显示动态时间?答:建立一个计算域,表达式为string(datetime(today(),now()),'yyyy年mm月dd日hh点mm分ss秒'),同时设置datawindow的属性dw_1.Object.DataWindow.Timer_Interval=50015、如何让带用titlebar的datawindow控件的标题栏诚活动窗口的颜色?答:外部函数定义:funcationlognSetActiveWindow(longhwnd)Libraryuser32.dlldatawindow控件的clicked事件代码:setactivewindow(handle(this))16、如何设置datawindow的当前行指示图标?答:在datawindow中建立一个计算列,expression为'',并将该计算列移动为datawindow的第一个列,在datawindow控件的rowfocuschanged事件中写入代码:SetRowFocusIndicator(hand!)或setrowfucsindicator(p_1)//p_1为窗口上的picture控件名17、如何通过代码打开dddw?答:定义外部函数引用声明SUBROUTINEkeybd_event(intbVk,intbScan,intdwFlags,intdwExtraInfo)LIBRARYuser32.dll代码如下:[constantintegerVK_F4=115dw_1.SetFocus()dw_1.SetColumn(dept_head_id)//设置当前dddwkeybd_event(VK_F4,0,0,0)//按下F4键keybd_event(VK_F4,0,2,0)//释放F4键18、如何打印datawindow的内容到文件中?答:dw_1.object.datawindow.print.fileName=c:\temp.prndw_1.print()19、如何设置dddw的初始值?答:dw_1.object.columnname.Initial=your_initial_value20、如何只显示不同的数据?答:dw_1.filter(isnull(columnname[-1])andcolumnnamecolumnname[-1])dw_1.filter()21、如何让带有titlebar的datawindow不可以移动?答:在datawindow的自定义事件ue_nchittest(pbm_nchittest)中写入如下代码:return122、如何在N-UP显示风格中建立基于第N栏中的列的计算列?答:如column有两列,number和price,并显示为两栏,则第一栏的cost计算列的expression为number*price,第二栏的cost_1计算列的expression为number[1]*price[1]23、如何清空ddlb或edit.codetable中项目?答:dw_1.Object.columnname.Values=24、如何实现指定的column的字体旋转90度?答:dw_1.object.columnname.font.Escapement=90025、如何获取datawindow的sql代码?答:可以通过以下四种方法获取sql代码:stringszselectszselect=dw_1.describe(datawindow.table.select)szselect=dw_1.describe(datawindow.table.sqlselect)szselect=dw_1.describe(datawindow.table.select.attribute)szselect=dw_1.getsqlselect()27、如何获取datawindow对象占有的虚拟存储的容量?答:使用datawindow.storage属性举例:在datawindow控件的retrieverow事件中,写如如下代码:longlstoragelstorage=long(dw_1.object.datawindow.storage)iflstorage50000thendbcancel()28、如何连续在同一张纸打印两个数据窗口?答:dw_1.object.datawindow.print.filename=temp.prndw_2.object.datawindow.print.filename=temp.prndw_1.print()dw_2.print()29、如何设置datawindow分组后每个分组中的记录号?答:建立一个计算列,expression为getrow()-first(getrow()forgroup1)+130、如何实现在datawindow中只有新增的行,才可以编辑?答:在所有的column的protect属性表达式中写入以下表达式:if(isrownew(),'0','1')31、除了循环以外,有没有更好的方法统计数据窗口中处于选中状态的行数?一般习惯于使用循环来统计数据窗口中处于选中状态的行数,有没有更好的方法?其实此问题在应用上用处不大,讨论一下,活跃一下思维还是有好处的。方法一:longll_Selectedll_Selected=long(dw_1.describe(evaluate('sum(if(IsSelected(),1,0)forall)',1)))方法二:longll_Selectedll_Selected=long(dw_1.describe(evaluate('count(IsSelected()forall)',1)))方法三:upperbound(dw_1.Object.Data.Selected)32、问:怎么让PB只打印当前记录,是用Free格式制作的数据窗口!---------------------------------------------------------------答:DataStoreldt_templongll_Row,ll_Rowsll_Rows=dw_XX.Rowcount()Ifll_Rows=0ThenGoTothe_endIfll_Rows=1Thendw_XX.Print()GoTothe_endEndifdw_XX.SetRedraw(False)ldt_temp=CreateDataStoreldt_temp.DataObject=dw_XX.DataObjectll_Row=dw_XX.GetRow()dw_XX.RowsMove(1,ll_Rows,Primary!,ldt_temp,1,Primary!)ldt_temp.RowsMove(ll_Row,ll_Row,Primary!,dw_XX,1,Primary!)dw_XX.Print()dw_XX.RowsMove(1,1,Primary!,ldt_temp,ll_Row,Primary!)ldt_temp.RowsMove(1,ll_Rows,Primary!,dw_XX,1,Primary!)Destroyldt_tempdw_XX.SetRedraw(True)the_end://只用将上述脚本拷入到打印部分即可,dw_XX为被打印的free型数据窗口,该方法可保证dw_XX中的数据在打印前后包括sort等属性均不发生任何改变,但效率较低,不宜用在数据量太大的数据窗口中,当然,考虑到打印本身速度就比较慢,所以3000行数据是可以采用这种方法并让用户接受的。若在同一窗口上存在与dw_XX共享的grid数据窗口并且与dw_XX同时显示,则需要与dw_one一起SetRedraw()38、字段如何自动换行的同时且自动高度?答:将数据窗口中相应列的autohorzscroll为不选中,选中autosizeheight将detail的autosizeheight选中。在数据窗口retrieve后调用下面函数即可uf_set_text(datawindowadw_content,stringas_columns,boolean,ab_ignoreblank)if(notisvalid(adw_content))orisnull(as_columns)orlen(as_columns)1orisnull(ab_ignoreblank)thenreturn-1n_cst_stringlnv
本文标题:pb中datawindow常用技巧
链接地址:https://www.777doc.com/doc-2848896 .html