PowerBuilder 在 ItemChanged 上自定义错误消息
PowerBuilder Customize Error Message on ItemChanged
在数据窗口的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。
来自 PowerBuilder 帮助:
Return Values
Set the return code to affect the outcome of the event:
0 (Default) Accept the data value
1 Reject the data value and do not allow focus to change
2 Reject the data value but allow the focus to change
因此,在您的情况下,您需要从 itemchanged 事件中 RETURN 1。
由于您在 itemchanged 中处理此错误,因此您需要 'bypass' itemerror 事件。您可以通过在此处放置 RETURN 1 来实现。
通过在 itemchanged 事件中触发错误,您可以创建自定义错误消息框或使用系统默认值并控制标题、图标、按钮等。
假设 payer_phone 是正在编辑的字段,我相信您需要 SetText() 而不是在数据集中设置基础值。
要理解这种差异,您需要知道对于数据输入,有一个控件 "floating above" 数据窗口,可以在具有焦点的字段之间移动。当输入的数据被接受时,浮动控件中的值被刷新到数据仓库的数据集中。 GetText() 和 SetText() 处理那个浮动控件。您的代码正在更改 DW 数据集。在第一个错误之后,下次您按 Tab 时,未检测到控件中的任何更改,因此不会发生数据更改时触发的功能,并且您的错误代码永远不会启动。
祝你好运。
您可以使用具有不同签名的相同函数 MessageBox 修改图标和标题:
MessageBox(标题,文本{,图标{,按钮{,默认}}})
HTH,
阿里
您可以使用具有不同签名的相同函数 MessageBox 修改图标和标题:MessageBox ( title, text , icon , button , default )
HTH、阿里
在数据窗口的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。
来自 PowerBuilder 帮助:
Return Values Set the return code to affect the outcome of the event:
0 (Default) Accept the data value
1 Reject the data value and do not allow focus to change
2 Reject the data value but allow the focus to change
因此,在您的情况下,您需要从 itemchanged 事件中 RETURN 1。
由于您在 itemchanged 中处理此错误,因此您需要 'bypass' itemerror 事件。您可以通过在此处放置 RETURN 1 来实现。
通过在 itemchanged 事件中触发错误,您可以创建自定义错误消息框或使用系统默认值并控制标题、图标、按钮等。
假设 payer_phone 是正在编辑的字段,我相信您需要 SetText() 而不是在数据集中设置基础值。
要理解这种差异,您需要知道对于数据输入,有一个控件 "floating above" 数据窗口,可以在具有焦点的字段之间移动。当输入的数据被接受时,浮动控件中的值被刷新到数据仓库的数据集中。 GetText() 和 SetText() 处理那个浮动控件。您的代码正在更改 DW 数据集。在第一个错误之后,下次您按 Tab 时,未检测到控件中的任何更改,因此不会发生数据更改时触发的功能,并且您的错误代码永远不会启动。
祝你好运。
您可以使用具有不同签名的相同函数 MessageBox 修改图标和标题: MessageBox(标题,文本{,图标{,按钮{,默认}}})
HTH, 阿里
您可以使用具有不同签名的相同函数 MessageBox 修改图标和标题:MessageBox ( title, text , icon , button , default )
HTH、阿里