当前位置: 代码迷 >> PB >> 为什么SETITEM的数值很快不见了?解决办法
  详细解决方案

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

热度:77   发布时间:2016-04-29 08:17:48.0
为什么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……
  相关解决方案