在datawindow的ItemChanged事件中,我必须在输入错误时提示消息。 问题是:当我使用messagebox()时,它正确提示消息,但字段不是空白,按TAB键,控件将转移到下一个字段。 (表示再次按TAB键接受错误的值) 以下是上述场景的简单代码:
if lb_error = true then
messagebox('Info','Only Digits Are Allowed ~nAll Digits Cannot Be 0')
this.object.payer_phone[1] =''
end if
然后我尝试了修改属性,它的工作正常,但有没有可能改变它的标题和图标?我正在使用以下代码,请帮助我。
if lb_error = true then
this.Modify("payer_phone.ValidationMsg='Only Digits Are Allowed ~nAll Digits Cannot Be 0'")
this.object.payer_phone[1] =''
return 1
end if
我使用的是PowerBuilder 12.0。
答案 0 :(得分:1)
来自PowerBuilder帮助:
返回值 设置返回代码以影响事件的结果:
0(默认值)接受数据值
1拒绝数据值,不允许更改焦点
2拒绝数据值但允许更改焦点
因此,在您的情况下,您需要从itemchanged事件中返回1。
由于您在itemchanged中处理此错误,因此您需要“绕过”itemerror事件。你可以在那里放置一个RETURN 1。
通过触发itemchanged事件中的错误,您可以创建自定义错误消息框或使用系统默认值并控制标题,图标,按钮等。
答案 1 :(得分:0)
假设payer_phone是正在编辑的字段,我相信您需要SetText()而不是设置数据集中的基础值。
要理解这种差异,您需要知道,对于数据输入,有一个控件“漂浮在”DataWindow上方,从一个字段移动到另一个具有焦点的字段。当接受输入的数据时,浮动控件中的值将刷新到DW的数据集。 GetText()和SetText()处理该浮动控件。您的代码正在更改DW数据集。在第一个错误之后,下次按Tab键时,未检测到控件中的任何更改,因此未发生数据更改时触发的功能,并且您的错误代码永远不会启动。
祝你好运。答案 2 :(得分:0)
您可以使用具有不同签名的相同功能MessageBox修改图标和标题:MessageBox(标题,文本,图标,按钮,默认)
HTH,阿里