求助:itemchanged事件里面(dwo.Name)为什么报错?

tomorrower 2011-10-18 07:12:30
求助:itemchanged事件里面的代码:目的是某些特定的字段改变的时候作一些事情,但是报错:代码如下

//修改招标价格后保存
string ls_col_name
ls_col_name = (dwo.Name)

If ls_col_name = 'zbsj_zbje' Or ls_col_name = 'zbsj_wxxz' Then

错误信息:NULL object reference at line 3 in itemchanged of dw_3
...全文
157 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
srj911 2011-10-20
  • 打赏
  • 举报
回复
PB还是简单的
iuu54321 2011-10-19
  • 打赏
  • 举报
回复
哦,原来错啦,那就再学习一遍!
PB菜鸟 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yyoinge 的回复:]
引用 3 楼 yyoinge 的回复:

//修改招标价格后保存
if not isvalid(dwo) then return
string ls_col_name
ls_col_name = (dwo.Name)

If ls_col_name = 'zbsj_zbje' Or ls_col_name = 'zbsj_wxxz' Then

错啦,应该是

//修改招标价……
[/Quote]
学习 。
yyoinge 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yyoinge 的回复:]

//修改招标价格后保存
if not isvalid(dwo) then return
string ls_col_name
ls_col_name = (dwo.Name)

If ls_col_name = 'zbsj_zbje' Or ls_col_name = 'zbsj_wxxz' Then
[/Quote]
错啦,应该是

//修改招标价格后保存
if isnull(dwo) then return
string ls_col_name
ls_col_name = (dwo.Name)

If ls_col_name = 'zbsj_zbje' Or ls_col_name = 'zbsj_wxxz' Then
iuu54321 2011-10-19
  • 打赏
  • 举报
回复
学习!
fuxiaoyang13 2011-10-19
  • 打赏
  • 举报
回复
dingding!!
yyoinge 2011-10-18
  • 打赏
  • 举报
回复
//修改招标价格后保存
if not isvalid(dwo) then return
string ls_col_name
ls_col_name = (dwo.Name)

If ls_col_name = 'zbsj_zbje' Or ls_col_name = 'zbsj_wxxz' Then
SKY_4K_PPM 2011-10-18
  • 打赏
  • 举报
回复
原因很简单,就是你有时候单击点中的对象或许是一条线或者是其他的对象的话 dwo.name是无效的.
itemchanged事件添加代码:
if dwo.name<>'zbsj_zbje' and dwo.name<>'zbsj_wxxz' then return
................
kenshu 2011-10-18
  • 打赏
  • 举报
回复
ls_col_name = string(dwo.Name)
关于进程&线程查看器 用过vc++自带的Process Viewer,觉得这个小程序简单易用,有时候作用还很大,我就产生了自己做一个类似程序的想法,想着想着就着手作了起来。  首先我查看了有关进程和线程的api函数(在tlhelp32.h中)了解了他们的用法。  具体实施阶段:   界面设计:该实用程序的界面几乎完全参考vc++自带的Process Viewer,以前从未接触过CListView,这回是从头开始作,我参考了"MFC Windows程序设计"里面有详细的关于CListView的介绍和实例,不过有些地方它并未讲清楚,你只能看mfc源代码凭经验猜测某个函数的用法以及某些事件产生的消息,比如当所选Item改变时产生消息LVN_ITEMCHANGED,这个消息使我能在选中某一个Item时能通知线程视图更新。界面设计的另一个问题是分割窗口,这也是我第一次接触CSplitterWnd类,我使用了静态分割创建窗口的方法,以加入两个不同的视图其类分为:CThreadList和CProcessView. 下面简单介绍一下,该程序的功能正如其名,当你启动该程序时,它会检索当前在该系统中的进程和线程,并将进程的基本信息以列表的形式列出来,当你选中某一进程时,程序会在下面的线程视图中列出该进程的所有线程的基本信息。由于刚刚作玩,所以没有进行系统的测试,里面可能有一些bug希望用户发现后能与我联系,谢谢。
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时添加处理的代码。 实现了上述的内容,这个控件也就基本完成了。由于代码并不复杂,我就不将代码列出来讲解了,我将提供代码的下载,大家在看代码的时候,如有不明白的地方,可以参考我前面的控件教程。因为只花了几个小时写的这个控件,难免还有一些问题,请大家指出。

609

社区成员

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

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