验证Powerbuilder中的文本字段

时间:2016-12-22 02:58:30

标签: powerbuilder

我是powerbuilder的新手:

我想在电子邮件文本字段完成输入后验证它并转到另一个文本字段。

所以我将我的代码放在数据窗口"

的" itemchanged事件中

继承我的代码:

choose case dwo.name
case 'email'
  if data <> '' then
    if match(data,'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z][a-zA-Z][a-zA-Z]*[a-zA-Z]*$') then
    else
      This.SetText('')
      MessageBox('Error', 'This is an invalid email')
    end if
  end if
end choose

这里发生的是当我输入例如'asd'时。

所以这是一封无效的电子邮件becoz它没有通过比赛

它实际上清除了电子邮件字段,但在messagebox fired和我clicked OK之后。

'asd'值返回我已清除的电子邮件字段。

我觉得这很奇怪?

我应该在哪个事件put my validation以及如何对此进行编码?或者itemchanged中有一个代码,以便我可以清除电子邮件字段?

有谁可以帮助我?

1 个答案:

答案 0 :(得分:1)

幸运的是我通过在dw itemchanged事件中执行此操作来修复它。

choose case dwo.name
case 'email'
  if data <> '' then
    if match(data,'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z][a-zA-Z][a-zA-Z]*[a-zA-Z]*$') then
    else
      MessageBox('Error', 'This is an invalid email')
      Return 1 //means does not accept the value and triggers itemerror.
    end if
  end if
end choose

通过添加return 1,它会显示另一个消息框。

Data Window Error: This 'asd' does not pass the validation

要覆盖此默认错误消息。

在dw itemerror事件

中添加一些代码
CHOOSE CASE dwo.name   
  CASE 'email'  
    This.setText('') //if you just want to validate just remove this.
    Return 2 //means does not accept the value and does not let losefocus
END CHOOSE 

。 :d