(高级应用)一个和post有关的命题

kingor2001 2009-12-17 01:54:23
我在做模糊查询,即一个dw的一个column中挂一个dddw,允许编辑,输入的时候dddw自动模糊匹配并滚动到相应行,代码大致如下:
注:idwc_child是挂到列inventory_materialid上的dddw,在window的open中初始化完毕,在dw的editchanged事件中有如下代码:
if dwo.name <> 'inventory_materialid' then return
ll_num = idwc_child.find("lower(name) like '%" + lower(data) + "%'", 1, idwc_child.RowCount())
If ll_num > 0 Then
idwc_child.post scrolltorow(ll_num)
End If
关键问题是idwc_child.post scrolltorow(ll_num)一行,如果去掉post,则scrolltorow不会起任何作用,虽然是成功了的。不知道此处post到底起了什么作用?
我在网上找了很久,只发现一处有人提及这个问题,但是解决方法没有用post好。post是我无意试出来的。
我猜想是否是editchanged还要自动完成其他一些代码,导致scrolltorow无效,而当scrolltorow放在最后执行,则没有问题。
没有用pb好多年了,这两天因为工作原因又安装了一个11.5的用,发现有这个问题,换成pb8,也是一样,呵呵。

今天思考了一下,发现了原因:
问题原因已经找到,dddw本身具有匹配并scrolltorow的功能,该功能在editchanged事件后执行,因此加上自己的代码,相当于执行了 2次scrolltorow,dddw自身的scrolltorow覆盖了自己代码的scrolltorow。加上post,让自己的 scrolltorow在dddw的scrolltorow后面执行,就可以达到自己的效果了。
最好能屏蔽dddw自身的scrolltorow功能,但是好像pb不支持。
...全文
99 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pb8 2009-12-17
  • 打赏
  • 举报
回复
试着在你的post前加个message.processed=true
noviceCJ 2009-12-17
  • 打赏
  • 举报
回复
up
发帖
DataWindow

603

社区成员

PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
帖子事件
创建了帖子
2009-12-17 01:54
社区公告
暂无公告