用数据窗口控件名.describe("Evaluate('计算公式',行号)") 理论上可以取到数据窗口里所有能用计算列计算的内容,如:
PB中的Describe,Evaluatate,LookUpDisplay小结
Describe 可以描述DW中某个对象的某个属性的取值,虽然函数Describe可以获取对象的信息,但是表达式的取值就不能正常读取了,而这又是经常遇到的. Evaluate 如果想获取数据窗口对象中由属性、函数等构成的表达式的取值时,必须在函数Describe中使用函数Evaluate,LookUpDisplay
例一:
ls_1 = dw_1.Describe("dw_1.cb_4.text")ls_2 = This.Describe(dwo.name + ".ColType")语法: value = datawindow.Describe(string ls)
例二:
判断第3行的sex是否为1,如果是则返回男,否则返回女dw_1.Describe("Evaluate('If(sex = 1, 男, 女) ', 3)")
语法: Evalute('expression',rowno)其中,expression是属性表达式,rowno是要描述的行号。该函数放置在Describe的属性列表中。
例三:dw_1.Describe("Evaluate('Lookupdisplay(column)'," + string (row number) + ")")
在dw_1 里面有一个gxbm字段的edit属性页下面:dataWindow:d_dmzd_gxbm,Display Column:dmmc,data Column:gxbm.在显示时:不是显示gxbm的值,而是显示dmmc的值,但我们用getitemstring(row,"gxbm")时,得到的是gxbm的值,而不是显示的dmmc值,如果我们想得到显示的dmmc值,那就用lookupdisplay来用:ls_1 = dw_1.describe( "Evaluate('lookupdisplay(gxbm)'," + string(1) + ")")
另: 在用代码学PB中有这样一段代码,值得关注:
integer li_PageCount
//*******分页
li_PageCount = integer(dw_1.describe("evaluate('pagecount()',1)"))
i_int_currentpage = integer(dw_1.describe("evaluate('page()',1)"))
st_page.Text = "第"+String( i_int_currentpage ) + "页(共" + String( li_PageCount )+"页)"
动态设置下拉数据窗口
动态设置字段的下拉窗口如下:
dw_1.modify("column_result.dddw.name='" + ls_dataobject + "'")//设置数据窗口
dw_1.Modify("column_result.dddw.DisplayColumn ='" + ls_display + "'")//设置显示字段
dw_1.modify("column_result.dddw.DataColumn='" + ls_data + "'")//设置数据字段
dw_1.modify('column_result.dddw.Autohscroll=yes')
dw_1.modify('column_result.dddw.Allowedit=yes ')
dw_1.modify("column_result.dddw.VScrollBar=yes")
dw_1.modify('column_result.dddw.useasborder=yes')
dw_1.modify('column_result.dddw.ShowList=yes')
dw_1.GetChild("column_result",ldwc_childdw)//获取下拉数据窗口
ldwc_childdw.settransobject(sqlca)
ldwc_childdw.retrieve()//刷新下拉数据窗口的值
================================================================
动态为下拉数据窗口添加数据如下:
dw_1.GetChild("column_result",ldwc_childdw)//获取下拉数据窗口
ls_display = dw_1.describe('column_result.dddw.DisplayColumn')
ls_data = dw_1.describe('column_result.dddw.DataColumn')
ldwc_childdw.settransobject(sqlca)
ll_row = ldwc_childdw.insertrow(0)//新增行
ldwc_childdw.setitem(ll_row,ls_display,"显示数据")//填写数据
ldwc_childdw.setitem(ll_row,ls_data,"1")//填写数据