当前位置: 代码迷 >> PB >> 关于itemchanged,itemerror的疑问解决思路
  详细解决方案

关于itemchanged,itemerror的疑问解决思路

热度:74   发布时间:2016-04-29 10:01:01.0
关于itemchanged,itemerror的疑问
第一个疑问:
1、itemchanged:
  return 1
2、itemerror:
  return 3
发现事件触发情况为:itemchanged-->itemerror-->itemchanged-->itemerror.
为什么是两次?

第二个疑问:
1、itemchanged:
  return 1
2、itemerror:
  return 2
光标并不能移动到下一个单元格。
为什么?

------解决方案--------------------
第一个疑问:是不是你其他地方调用了,仔细检查程序
第二个疑问:仔细研究返回值,根据返回值操作
------解决方案--------------------
第一个问题。
1.可能其他地方在调用
2.继承的数据窗口,祖先脚本没有屏蔽。
第二个问题。
PB的帮助。
Event ID: pbm_dwnitemchange

Return value 
Set the return code to affect the outcome of the event:
0 (Default) Accept the data value
1 Reject the data value and do not allow focus to change
2 Reject the data value but allow the focus to change

------解决方案--------------------
第一个疑问: 
1、itemchanged: 
return 1 这里不接受变化数据,不允许移动焦点
2、itemerror: 
return 3 这里不接受变化数据,允许移动焦点return 1
发现事件触发情况为:itemchanged-->itemerror-->itemchanged-->itemerror. 
为什么是两次? 

第二个疑问: 
1、itemchanged: 
return 1 这里不接受变化数据,不允许移动焦点,试试return 2
2、itemerror: 
return 2 接受变化数据
光标并不能移动到下一个单元格。 
为什么?
------解决方案--------------------
应该都不是问题吧!
1.你用messagebox了吧!直接跟踪得话呢就会执行一次,只有当焦点离开时,相当又输入一次,会又触发一次的!

2.因为itemchanged:中返回1,不让移动焦点啊!
连别的列都点不了!
itemchanged 返回1 时会触发 itemerror ,itemerror 返回2只说允许接收数据,并不管焦点了!





------解决方案--------------------
探讨
第一个疑问:
1、itemchanged:
  return 1
2、itemerror:
  return 3
发现事件触发情况为:itemchanged-->itemerror-->itemchanged-->itemerror.
为什么是两次?

第二个疑问:
1、itemchanged:
  return 1
2、itemerror:
  return 2
光标并不能移动到下一个单元格。
为什么?