读书人

为什么SETITEM的数值很快不见了?解决

发布时间: 2012-05-23 13:44:13 作者: rapoo

为什么SETITEM的数值很快不见了?
DW内除了ITEMCHANGE外没其它事件,我做了一个SETITEM,完了以后很快这个数值消失了,求解

ls_zyps_bm=cur_object.no
this.object.zyps_bm[row]=ls_zyps_bm
ls_temp=this.object.zyps_bm[row]
messagebox("Dd",ls_temp)

弹出MESSAGEBOX时还正常显示,按完确定以后就不见了,DW只有ITEMCHANGE事件,没有其它事件

具体程序如下

sel_cli_sup_prod cur_Object
string ls_prodno,ls_temp
CHOOSE CASE dwo.name

CASE 'zypj_bz'
if data='1' then
dw_1.setitem(row,'zypj_ex_bz','1')
else
dw_1.setitem(row,'zypj_ex_bz','0')
end if

case 'zyps_bm'

dw_1.AcceptText()

string ls_zyps_bm
ls_zyps_bm=data

if ls_zyps_bm='' or isnull(ls_zyps_bm) then return



if asc(data) <= 127 then
cur_object.send_object = "d_zy_prod"
cur_object.no = trim(data)



else
cur_object.send_object = "d_zy_prod_name"
cur_object.no = "%" + trim(data) + "%"

end if

openwithparm(w_sel_cli_sup , cur_object )
cur_object = message.powerobjectparm


ls_zyps_bm=cur_object.no
messagebox("row",string(row))
messagebox("zyps_bm",ls_zyps_bm)
this.object.zyps_bm[row]=ls_zyps_bm
ls_temp=this.object.zyps_bm[row]
messagebox("Dd",ls_temp)










end CHOOSE




[解决办法]
setitem后,还要dw_1.accepttext()一下。
[解决办法]
setitem后(如果SETITEM的这个列是更改的这个列的话)

return 2

不要MESSAGEBOX.如果必须MESSAGEBOX的话

改为

setitem(...)
post messagebox('','')
return 2

--------------------
或者,如果你必须有一个reponse的窗口要在RETURN 2之前打开(比如上述的MESSAGEBOX)

则,新建一个窗口函数

wf_1(long row,long column,string value)//由这个函数去SETITEM

post wf_1(...)//留意是post
RETURN 2
[解决办法]
如果setitem是针对当前行和列做的操作,需要增加用到post函数


因为itemchanged执行完成后,pb才把编辑框中的数据接收到数据窗口的缓冲区中,意思就是执行过temchanged事件后,pb会自动执行一下类似于setitem,就会把你的setitem的值给冲掉了

你可以在itemchanged代码中这么写

this.post function setitem(row, "zyps_bm", ls_zyps_bm) //把你的this.object.zyps_bm[row]=ls_zyps_bm换为前面的代码 即可

[解决办法]

探讨

如果setitem是针对当前行和列做的操作,需要增加用到post函数


因为itemchanged执行完成后,pb才把编辑框中的数据接收到数据窗口的缓冲区中,意思就是执行过temchanged事件后,pb会自动执行一下类似于setitem,就会把你的setitem的值给冲掉了

你可以在itemchanged代码中这么写

this.post function setitem(r……

读书人网 >PB

热点推荐