PowerBuilder在ItemChanged上自定义错误消息

时间:2016-12-02 06:16:52

标签: sybase powerbuilder datawindow

在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。

3 个答案:

答案 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,阿里