数据窗口中的某一字段失去焦点在那个事件中如何写?

来源:互联网  责任编辑:小易  

例如数据窗口中有:字段XAAB所得的数值为2字段XABAB所得的数值也为2字段XAABC所得数值为3解决方案-up-解决方案-计算列www.zgxue.com防采集请勿采集本网。

dw_1,字段:分值1 分值2 合计

在dw_1的分值1中输入10,分值2中输入10,合计=20,光标离开20时,判断 if 合计>=20 then 前面数据录入有误。

方法:假设数据窗口为dw_1,itemchanged事件中: if dwo.name='镇字段名' then datawindowchild ld_child dw_1.getchild('村字段',ld_child) ld_child.settransobject(sqlca) ld_child.retrieve(dwo,data)

已设置TAB键用Enter代替事件。

首先确定,代码肯定是要写在数据窗口的单击事件中。即clicked事件中,这样才会单击数据窗口时触发。得到这一行的相应的数据,需要逐个的获取,先根据要得到的数据定义变量,变量的类型要与数据

请教:在什么事件中,如何写校验合计的代码?

直接在数据表里是设置不了的。需要新建一个更新查询,在查询里添加一个计算字段,字段里写上公式就可以了。

如果是在dw_1的属性中设置校验,应该在哪个属性中如何写代码?

例如数据窗口是按整型字段“ID”升序排列的,用户在单行编辑器中输入1,则数据窗口滚动到ID字段第一位为“1”的第一行并加亮显示;再在1后输入0,则数据窗口滚动到ID字段前两位为“10”的第一行,依次类推

查资料有的说在itemfocuschanged的dwo.name是失去焦点后的判断,实际上不是。

设置字段的taborder值,不可编辑的原因,肯定是你新添加字段的taborder值是0.只要设置一个非零的值,就可以编辑了。点击上方的format菜单,最后一项就是taborder,点一下,就能看到字段上有红色

或者问dw_1中有 字段 losefocus的事件吗?

dw_1  itemfocuschanged事件

decimal dec,dec1,dec2;

dec1 = dw_1.getitemdecimal(dw_1.getrow(),"col1");  //取当前行你要取的列名col1

dec2 = dw_1.getitemdecimal(dw_1.getrow(),"col2");//取当前行你要取的列名col2

dec = dec1 + dec2;

if  dec >= 20 then

messagebox("警告","前面录入数据异常");

else

执行正常操作

end if;

如果你keydown事件能执行,直接用keydown也行

引用 1 楼 yusantos 的回复:
dw_1  itemfocuschanged事件

decimal dec,dec1,dec2;

dec1 = dw_1.getitemdecimal(dw_1.getrow(),"col1");  //取当前行你要取的列名col1

dec2 = dw_1.getitemdecimal(dw_1.getrow(),"col2");//取当前行你要取的列名col2

dec = dec1 + dec2;

if  dec >= 20 then

messagebox("警告","前面录入数据异常");

else

执行正常操作

end if;

应该加一句

if dwo.name='合计' then

否则光标离开每一个字段后都会提示;

这个问题解决了,不知道有没有字段离开后的事件?就像delphi的afteradoquerychange(好像是)一样

在dw_1的分值1中输入10,分值2中输入10,合计=20,光标离开20时,判断 if 合计>=20 then 前面数据录入有误。

跟合计=20有什么关系?不明白跟光标又有什么关系。

只要在editchanged事件里判断分值1 + 分值值2 >= 20就提示就可以了,>= 20 正在录入的清空或0,合计用计算列可以自己计算,也可以用其他字段或者text,自己计算后赋值。

如果一定纠结光标,自定义mousemove事件,光标出了合计=20的范围,计算提示,清零

不明白跟光标有什么关系,

datawindow 的 editchanged事件里处理,判断分值1+分值2 >=20 等于,当前录入的字段就清空,至于合计如果是计算列就不用处理,如果是其他的字段或者text之类就计算赋值。

如果一定纠结光标,自定义mousemove事件,判断光标是否离开合计=20的对象区域,是就字段就清空

引用 5 楼 zlf19810306 的回复:
不明白跟光标有什么关系,

datawindow 的 editchanged事件里处理,判断分值1+分值2 >=20 等于,当前录入的字段就清空,至于合计如果是计算列就不用处理,如果是其他的字段或者text之类就计算赋值。

如果一定纠结光标,自定义mousemove事件,判断光标是否离开合计=20的对象区域,是就字段就清空

哦,可能是delphi养成的习惯问题吧。

楼上和你说得对,这个可以理解成全局实时判断,理论上加上这个判断,合计不会有不符合限制的值,所以不管在哪个字段都不会有提示弹出。

光标问题是我想在光标离开合计后判断是不是符合限制,以前养成的判断习惯,哈哈。

在订单datawindow时加入判断条件如:select column1,column2,column3,column4from table where column1>:as_i然后在某行代码中写入下面的代码即可实现过滤!int li_i=3dw_1.retrieve(li_i)内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 如果数据窗口中有数据,然后获取某一行的某个字段,如果这个字段的值大于3让他隐藏?如何用pb语句实现?
  • 怎么取得数据窗口中去掉某一字段重复值后的行数
  • PB中如何获取当前数据窗口中的某一个字段值?
  • 如何读取数据窗口中某一字段的内容呢
  • 【求助】pb 数据窗口中某一字段的dropdown内容筛选
  • PB 当单击数据窗口中的某一行时,可以得到那一行相应的数据吗?
  • 怎么获取数据窗口中某字段的taborder的值
  • 数据窗口中怎样实现某一列的增量查询功能
  • 怎么获取数据窗口中某字段的taborder的值
  • 怎么实现pb的数据窗口中某一行高亮显示
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved