关于itemchanged事件的问题

swazyl 2003-08-22 11:47:48
我有个问题:我在数据窗口的itemchanged事件中加入了一段程序,当某列的值改变时就检测该列录入的值是否符合条件,如果检测到不符合条件则给出信息提示并修改它,我的问题是,我怎么才能让光标回到这一列,由于itemchanged事件是光标离开当前列时才触发,我该怎么做,我用了dw_1.scrolltorow(ll_found)和dw_1.setcolumn(12)都没用.
...全文
87 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangyiwei 2003-09-01
  • 打赏
  • 举报
回复
先:if 没有通过有效性检验 then
messagebox("错误", "您输入有错误")
end if
return 1

再在itemerror事件中写return 1就可以了
不会出现item 'xxxx' does not pass valiadation test的提示了。
yanghongfeng 2003-08-24
  • 打赏
  • 举报
回复
return 1
huangxinru 2003-08-22
  • 打赏
  • 举报
回复
return 1
swazyl 2003-08-22
  • 打赏
  • 举报
回复
mittee(google),你QQ是多少,MSN也行,那样交流方便点,我的QQ是15485066,MSN邮箱是
swazhongyongli@hotmail.com
swazyl 2003-08-22
  • 打赏
  • 举报
回复
mittee(google),你QQ是多少,MSN也行,那样交流方便点,我的QQ是15485066,MSN邮箱是
swazhongyongli@hotmail.com
swazyl 2003-08-22
  • 打赏
  • 举报
回复
mittee(google) ,具体怎么实现
mittee 2003-08-22
  • 打赏
  • 举报
回复
我看了你的第二问题,我想检测要用到内嵌sql
锁定光标用return 值
mittee 2003-08-22
  • 打赏
  • 举报
回复
我的没有英文提示啊,

messagebox("","注意,你输入的数据类型不对")

return 1 //这个限制

是在itemerror 里写的吗

如果 是return 0 就会有英文提示了

swazyl 2003-08-22
  • 打赏
  • 举报
回复
各位:对于在上面提出的存放位置问题有好办法吗,帮帮我,谢谢
Key 2003-08-22
  • 打赏
  • 举报
回复
楼上说得对!
如果数据合法性检验没有通过,先触发 itemerror事件,在这个事件中填写相关的判断代码。
其中可以使用 dwo对象,就是datawindowobject,可以很方便对数据窗口中的对象进行访问,比如可以这样:
if dwo.name = 'id' then
messagebox("错误", "您输入的Id有错误")
end if
或者干脆就是choose case 把所有的窗口内对象的错误处理都分别写到每个case中。
通过了以后,return 1, 这样可以不显示系统出现的 英文错误信息。

swazyl 2003-08-22
  • 打赏
  • 举报
回复
workhand(hander),你好,我用了你的方法,系统提示还是要出来,而且是英文的,操作人员不一定看得懂
workhand 2003-08-22
  • 打赏
  • 举报
回复
If dwo.name = 位置字段名 Then

IF 校验不通过 Then
dw_1.setcolumn(字段名)
Return 1
End iF
End IF
swazyl 2003-08-22
  • 打赏
  • 举报
回复
mittee(google),你好,用你的办法可以做到,但除了messagebox提示信息外,系统还提示"item 'xxxx' does not pass valiadation test",我能不能去掉系统提示.
swazyl 2003-08-22
  • 打赏
  • 举报
回复
谢谢各位热情帮忙,我还有一个问题:有个数据窗口的某列是录入产品存放位置的,在录入某个产品的存放位置后我要及时判断所录入的位置是否已经存放了其它产品,如果检测到确实存放了其它产品时,就必须提示操作人员修改当前录入的存放位置,而且如果它不修改则光标不能移动,一直在该列直到操作人员把它修改成正确的存放位置为止,我在itemchanged事件中判断出了需要操作人员修改,但我无法使光标停留在该列位置上而直到修改正确为止,我该怎么做.
coordinate 2003-08-22
  • 打赏
  • 举报
回复
setrow(m)
setcolumn(n)
mittee 2003-08-22
  • 打赏
  • 举报
回复
数据窗口输入的数据如果不符合条件 ,先触发 itemerror事件

messagebox("","注意,你输入的数据类型不对")

return 1

如果检验通过了,才触发itemchanged事件
是这样的。
VS风格的ToolBox和QQ的界面很相似,都是有多个栏目,并且这些栏目可以展开和折叠,当鼠标在某个子栏目上时,可以高亮显示,另外在VS风格的ToolBox中,点击选中项目的时候,要用特殊的颜色标识出来。 1. 创建控件的边框,我在前边的文章也讲过(),直接将代码复制过来,稍做修改即可。 2. 添加滚动条,因为我们的控件只需要垂直的滚动,所以我只只加入一个垂直的滚动条。 3. ToolBox包含多个Category,我们不但要创建Category类,还要创建这个类的集合。 4. 每一个Category包含多个Item,我们不但要创建ToolBoxItem类,还要创建这个类的集合。 5. 重载OnPaint方法,绘制控件的内容,在绘制的时候要注意滚动条的当前值,由于采用了双缓冲机制,所以每次总是将所有的内容重绘一次,不考虑ClipRect。 6. 写一个方法,根据鼠标的坐标计算出鼠标指向的Item或者Category,这个方法是这个控件的核心。 7. 重载OnMouseMove方法,当鼠标指向某个Item的时候,高亮显示出来。 8. 重载 OnMouseDown方法,当鼠标在某个Item上按下的时候,用指定的颜色标识出来,如果鼠标按下的地方是一个Category,根据当前的情况展开或者时折叠这个category。 9. 计算控件当前状态的内容的总的高度,用于设置滚动条的可见与不可见。 10. 暴露一个属性,用于为用户提供当前选中的Item。 11. 声明一个ItemChanged事件,便于用户在选择另一个Item时添加处理的代码。 实现了上述的内容,这个控件也就基本完成了。由于代码并不复杂,我就不将代码列出来讲解了,我将提供代码的下载,大家在看代码的时候,如有不明白的地方,可以参考我前面的控件教程。因为只花了几个小时写的这个控件,难免还有一些问题,请大家指出。
关于进程&线程查看器 用过vc++自带的Process Viewer,觉得这个小程序简单易用,有时候作用还很大,我就产生了自己做一个类似程序的想法,想着想着就着手作了起来。  首先我查看了有关进程和线程的api函数(在tlhelp32.h中)了解了他们的用法。  具体实施阶段:   界面设计:该实用程序的界面几乎完全参考vc++自带的Process Viewer,以前从未接触过CListView,这回是从头开始作,我参考了"MFC Windows程序设计"里面有详细的关于CListView的介绍和实例,不过有些地方它并未讲清楚,你只能看mfc源代码凭经验猜测某个函数的用法以及某些事件产生的消息,比如当所选Item改变时产生消息LVN_ITEMCHANGED,这个消息使我能在选中某一个Item时能通知线程视图更新。界面设计的另一个问题是分割窗口,这也是我第一次接触CSplitterWnd类,我使用了静态分割创建窗口的方法,以加入两个不同的视图其类分为:CThreadList和CProcessView. 下面简单介绍一下,该程序的功能正如其名,当你启动该程序时,它会检索当前在该系统中的进程和线程,并将进程的基本信息以列表的形式列出来,当你选中某一进程时,程序会在下面的线程视图中列出该进程的所有线程的基本信息。由于刚刚作玩,所以没有进行系统的测试,里面可能有一些bug希望用户发现后能与我联系,谢谢。

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧