【问题标题】:Prevent user from entering specific characters into DataWindow column防止用户在 DataWindow 列中输入特定字符
【发布时间】:2014-08-05 22:10:56
【问题描述】:

每当用户在 PowerBuilder 的 DataWindow 列中输入特定字符(分号、''、"" 和(括号))时,我都需要抛出一个消息框。

我试过了:

ls_text = dw_1.getitemstring(1, 'column')

但不知道如何解析输入的文本(ls_text)并搜索上面提到的那些字符。

对此的任何帮助将不胜感激。

提前致谢

【问题讨论】:

    标签: powerbuilder


    【解决方案1】:

    幸运的是,有很多选择可以做到这一点。要在另一个字符串中查找特定字符串,您可以使用以下函数:

    请记住,上述函数区分大小写。 例如,如果您想在字符串中查找第一个“逗号”:

    integer li_ret
    
    li_ret = Pos("Luke, I am your father :)", ",") // li_ret will be 5
    If( li_ret > 0 )then
        Messagebox("Warning", "I'm Darth Vader!")
    end if
    

    如果您需要更多,并且想搜索“正则表达式”,您可以使用:

    • Match()

    你也有很多可能性来做这个检查:

    • ItemChanged事件
    • EditChanged事件
    • Datawindow 的验证表达式和验证消息

    ItemChanged 事件中,如有必要,您可以拒绝该值!

    希望对您有所帮助!欢迎询问更多。

    兄弟。加博尔

    【讨论】:

    • 谢谢老兄。 Gábor,这帮了大忙。
    【解决方案2】:

    请勿将getItemString() 用于此目的。对itemChanged 事件使用data 参数。

    如果 DW 字段包含字符串“before”,并且您的用户键入“after”,则itemChanged 事件中的getItemString() 将返回“before”。 DW 列不包含用户在itemChanged 事件触发之后输入的数据(并且您没有返回非零返回码)

    【讨论】:

    • 好点 NoazDad。没错,需要正确检查 itemchanged 事件中的值。我要补充一点,不要依赖 itemchanged 事件来保证数据完整性。通常您会在更新之前检查数据,许多框架都有验证或 (ue_validate) 事件,如果数据不正确,您可以阻止更新发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 2016-01-06
    相关资源
    最近更新 更多