关于 MessageBox() 函数

eminena 2003-08-22 08:23:02
在某按钮的 GetFocus 事件中写一段代码:

……
if MessageBox('提示',' 确定进行退费吗?',question!,YesNo!)=2 then
messagebox('提示','未退费!')
return
end if

……

运行时,当单击消息对话框的“确定”按钮,关闭了消息对话框,但不能执行代码段的后续语句。
...全文
79 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
犇犇 2003-08-28
  • 打赏
  • 举报
回复
那么你可以让将祖先的代码不执行,只执行当前代码,不就可以了吗?
fyyifeng 2003-08-26
  • 打赏
  • 举报
回复
GETFOCUS事件是得到焦点时触发,当你点击确定时,焦点就失去了
这段代码写在GETFOCUS事件中是不会被全部执行的
highman 2003-08-26
  • 打赏
  • 举报
回复
写一个函数
在GetFocus调用看看怎么样
freebirdwjy 2003-08-26
  • 打赏
  • 举报
回复
后面加this.triggerevent( clicked!)
zzutligang 2003-08-24
  • 打赏
  • 举报
回复
为什么要在Getfocus事件中写代码?都写在clicked事件中不可以吗?
eltoro 2003-08-24
  • 打赏
  • 举报
回复
问题出在你去点击确定的时候,PB自动认为焦点已经转移到新打开的Messagebox窗口去了,所以你的事件应该没有执行完,可以试着调试一下看看是不是转走了
cooltnt 2003-08-24
  • 打赏
  • 举报
回复
把代码里的return都注解再调试看看
eminena 2003-08-24
  • 打赏
  • 举报
回复
Up
liaolwj 2003-08-24
  • 打赏
  • 举报
回复
其实一般不需要在GETFOCUS()事件上写,那样你即使不是你点击控件,你的事件都有可能触发,而实际上不是你所需要的,看你的意思应该是在点击的时候才触发,如果没有屏蔽掉你的祖先事件,那就在clicked()的时候先触发祖先的然后再执行后面的代码,所以你可以先屏蔽掉祖先事件,先执行另外一些代码,然后再去执行你的祖先事件Call Super::Clicked()
ActionStone 2003-08-24
  • 打赏
  • 举报
回复
当焦点离开数据窗体的时候便可以进行这样的校验
也可以在DW的itemfocuschanged()里写入校验吗

eminena 2003-08-23
  • 打赏
  • 举报
回复
liaolwj(风儿),这样只能解决问题,但我不明白原因!!
liaolwj 2003-08-23
  • 打赏
  • 举报
回复
对,你可以将判断放到CLICK()中,然后再调用一下祖先不就可以了吗。
eminena 2003-08-23
  • 打赏
  • 举报
回复
现在要解决(准确地说是要弄明白)的是:

我在按钮的 GetFocus 事件里调用,关闭消息对话框后,为什么不能执行该按钮的单击事件?
紫焰月读 2003-08-23
  • 打赏
  • 举报
回复
可以选择覆盖祖先的单击事件,然后再调用祖先的单击事件,调用祖先可以用 Call Super::Click()
lwwxf 2003-08-23
  • 打赏
  • 举报
回复
具体情况可能不同,DEBUG一下应该能找出问题的所在
eminena 2003-08-23
  • 打赏
  • 举报
回复
我这个按钮是继承的,用祖先的单击事件.必须在单击事件前执行以上代码,故放在 getfocus 中!
catty1338 2003-08-22
  • 打赏
  • 举报
回复
得到焦点事件的我很少用到,
那你为什么不在clicked里面写呢?
其实你可以在点击时看看是不是符合条件啊
如果=1就执行剩下的
如果=2就执行return啊
那样它等于2时直接返回,不会更新数据库
runsoft 2003-08-22
  • 打赏
  • 举报
回复
if li_rc=2 then
messagebox('提示','未退费!')
return
end if
//Messagebox 看看,如果有的话,说明是对的。
parent.dw_edit1.setitem(parent.dw_edit1.getrow(),'zjje',de_tfje)
eminena 2003-08-22
  • 打赏
  • 举报
回复
catty1338(乱狐):我的完整代码是:
在按钮的GetFocus 事件中:

dec de_tfje
integer li_rc
de_tfje=parent.dw_edit2.getitemnumber(parent.dw_edit2.getrow(),'hjje')

if de_tfje>=0 then
messagebox('提示','退费金额不正确,请修改!')
return
end if
li_rc=messagebox('提示','退费金额为: '+string(de_tfje)+' 确定进行退费吗?',question!,YesNo!)=

if li_rc=2 then
messagebox('提示','未退费!')
return
end if

parent.dw_edit1.setitem(parent.dw_edit1.getrow(),'zjje',de_tfje)


在按钮的 clicked 事件中 有 更新数据库及打印代码.


clicked的代码不能执行!

catty1338 2003-08-22
  • 打赏
  • 举报
回复
rt=MessageBox('提示',' 确定进行退费吗?',question!,YesNo!)
if rt=1 then
就执行
else
return
这样应该行,我都是这样做的
加载更多回复(4)

740

社区成员

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

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