我正在维护旧版VFP应用程序。
有一个用于数字输入的文本框。在验证事件中,我要检查用户是否输入了数字或文本框为空。
如何检测用户是否在字段中没有字符/数字?
[很遗憾,我无法区分用户输入0还是完全删除了文本框中的字符。在两种情况下,This.Value均为0,并且VARTYPE(This.Value)为“ N”,而EMPTY(This.Value)为.T。
[背景:以后真正输入的数字应作为该数字输入数据库,而删除的输入字段应存储为.NULL。 (是的,相应的表列接受Null值)
您不说TextBox是否绑定到表列(即ControlSource = mytable.myfield),但我认为是的。
如果文本框绑定到列,我认为您将无法执行此操作。您将必须取消绑定它,并在记录导航等中手动处理它。
然后您可以检查以下内容:
在TextBox Init()方法中:
this.NullDisplay = ''
在Valid()方法中:
Local llReturn
* -- In case it's a subclassed TextBox
llReturn = DoDefault()
* -- Assumes that the record pointer is on the right record in the table!
If llReturn
If alltrim(this.Text) == ""
replace myfield with .null. in mytable
Else
replace myfield with Val(this.Text) in mytable
endif
EndIf
Return llReturn