2013-04-27 77 views
2

每當用戶在PowerBuilder的DataWindow列中輸入特定字符(美分符號,'',「」和(圓括號))時,我需要拋出一個消息框。防止用戶在DataWindow列中輸入特定字符

我想:

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

,但不知道如何解析輸入的文本(ls_text)並搜索上面提到的這些字符。

任何幫助,將不勝感激。

在此先感謝

回答

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事件
  • 數據窗口的驗證表達和驗證消息

在你有拒絕的值,如果有必要的可能性ItemChanged事件!

我希望這個幫助!隨意要求更多。

Br。 Gábor

+0

謝謝Br。加博爾,這很有幫助。 – ama 2013-05-03 01:01:53

0

請勿爲此使用getItemString()。使用data參數來itemChanged事件。

如果DW字段包含字符串「before」,並且用戶在「after」後鍵入,事件中的getItemString()將返回「before」。 DW列不包含用戶輸入的數據,直到itemChanged事件觸發後(並且您沒有返回非零返回碼)

+0

感謝Paul的說明。 – ama 2013-05-03 01:02:25

+0

好點NoazDad。這是正確的,檢查itemchanged事件中的值需要正確完成。我會補充,不要依賴itemchanged事件來保證數據的完整性。通常你會在更新之前檢查數據,許多框架有一個驗證或(ue_validate)事件,如果數據不好,你可以防止更新發生。 – 2013-05-08 08:27:36

相關問題