一离开焦点,这个字段就不显示数据了,只要再得到焦点,就能显示出来

时间:2022-09-19 11:01:02
我用modify函数动态修改DW中字段坐标位置x,y,而且动态修改他的TABORDER值,用MODIFY修改都返回成功。可是现在有一个现象,所有字符型的字段,没有问题,数值型的字段用鼠标得不到焦点,只能用键盘得到焦点,当在数值型字段里,录入数据后,一离开焦点,这个字段就不显示数据了,只要再得到焦点,就能显示出来。不知为什么?
附我的程序:

for i = 1 to ii_fmt_rows
li_voucher = ids_fmt.getitemnumber(i,"f_voucher")
if li_voucher <> 1 then continue

ls_fmtname = ids_fmt.getitemstring(i,"f_fmtname")
ls_fmtcn = ids_fmt.getitemstring(i,"f_fmtcn")
ls_fmten = ids_fmt.getitemstring(i,"f_fmten")

dw_as.modify(ls_fmtname + ".tabsequence="+string(i*10))
// messagebox(string(i),ls_fmtname+':'+ls_rtn)
// string ls_rtn
dw_as.modify(ls_fmtname + ".Visible='1' ")
// if ls_rtn<>'' then messagebox('',ls_rtn)
//
dw_as.modify(ls_fmtname + "_t.visible='1' ")
// if ls_rtn<>'' then messagebox('',ls_rtn)
if ii_fmt_rows<=9 then
dw_as.modify(ls_fmtname + ".x="+string  (il_fmt_pos[(i*2 - 1),1]))
dw_as.modify(ls_fmtname + ".y="+string  (il_fmt_pos[(i*2 - 1),2]))
dw_as.modify(ls_fmtname + "_t.x="+string(il_fmt_pos[(i*2 - 1),3]))
dw_as.modify(ls_fmtname + "_t.y="+string(il_fmt_pos[(i*2 - 1),4]))
else
dw_as.modify(ls_fmtname + ".x="+string(il_fmt_pos[i,1]))
dw_as.modify(ls_fmtname + ".y="+string(il_fmt_pos[i,2]))
dw_as.modify(ls_fmtname + "_t.x="+string(il_fmt_pos[i,3]))
dw_as.modify(ls_fmtname + "_t.y="+string(il_fmt_pos[i,4]))
      end if
dw_as.modify(ls_fmtname + "_t.text='"+ls_fmtcn+"'")
dw_as.modify(ls_fmtname + "_t.color="+ls_black_color)//32768
dw_as.modify(ls_fmtname + ".color="+ls_black_color)//8388608
dw_as.modify(ls_fmtname + ".border = 4")
dw_as.modify(ls_fmtname + ".background.Mode=1")
//dw_as.modify(ls_fmtname + ".background.color="+ls_white_color)//16777215

if not isnull(ls_fmten) and ls_fmten <> '' then
dw_as.modify(ls_fmtname + ".dddw.name = 'd_dddw_" + ls_fmten + "'")

if ls_fmten = "BRANCH" OR ls_fmten = "PERSON" THEN
dw_as.modify(ls_fmtname + ".dddw.datacolumn = 'f_"+ls_fmten+"'")
else
dw_as.modify(ls_fmtname + ".dddw.datacolumn = 'f_code'")
end if
dw_as.modify(ls_fmtname + ".dddw.displaycolumn = 'f_name'")
dw_as.modify(ls_fmtname + ".dddw.vscrollbar = Yes")
dw_as.modify(ls_fmtname + ".dddw.autohscroll = Yes")
dw_as.modify(ls_fmtname + ".dddw.PercentWidth = 200")
dw_as.modify(ls_fmtname + ".dddw.AllowEdit = Yes")
dw_as.modify(ls_fmtname + ".dddw.AutoRetrieve = Yes")
is_cash_fmtname=""
if ls_fmten = "CASH" THEN 
dw_as.modify(ls_fmtname + ".dddw.PercentWidth = 350")
is_cash_fmtname = ls_fmtname
end if

dw_as.getchild(ls_fmtname,dwc)

choose case UPPER(ls_fmten)
case 'BRANCH'
ids_branch.SHAREDATA(DWC)
case 'PERSON'
ids_person.SHAREDATA(DWC)
CASE 'CMDTY'
ids_cmdty.SHAREDATA(DWC)
CASE 'USER'
ids_user.SHAREDATA(DWC)
CASE 'ACCNO'
ids_accno.SHAREDATA(DWC)
CASE 'PAY'
ids_pay.SHAREDATA(DWC)
CASE 'CNTRY'
ids_cntry.SHAREDATA(DWC)
CASE 'MONEY'
ids_money.SHAREDATA(DWC)
CASE 'ASSET'
ids_asset.SHAREDATA(DWC)
CASE 'SPEC'
ids_spec.SHAREDATA(DWC)
CASE 'WARE'
ids_ware.SHAREDATA(DWC)
CASE 'INVEST'
ids_invest.SHAREDATA(DWC)
CASE 'CASH'
ids_cash.SHAREDATA(DWC)
end choose
end if
next

5 个解决方案

#1


建议,屏蔽部分代码试试,可能是部分代码引起的。

#2


看看字体颜色是不是和背景色的问题

#3


楼主的多条modify可合并为一条写,性能会提高

#4


choose case 
  

 
end choose 
   加上dw_as.accepttext()
这样看看,我以前也出现过这样问题,忘了怎么解决了。
  你屏蔽掉颜色代码看看

#5


查一下是显示格式的问题format,我碰到过,不过是字符型的,显示格式是日期型的,因此焦点时显示,离开时不显示.我想你的问题和我的问题是一样的

#1


建议,屏蔽部分代码试试,可能是部分代码引起的。

#2


看看字体颜色是不是和背景色的问题

#3


楼主的多条modify可合并为一条写,性能会提高

#4


choose case 
  

 
end choose 
   加上dw_as.accepttext()
这样看看,我以前也出现过这样问题,忘了怎么解决了。
  你屏蔽掉颜色代码看看

#5


查一下是显示格式的问题format,我碰到过,不过是字符型的,显示格式是日期型的,因此焦点时显示,离开时不显示.我想你的问题和我的问题是一样的