我正在维护一个遗留的VFP应用程序。
有一个用于数字输入的文本框。 在验证事件中,我想检查用户是否输入了数字或将文本框留空。
如何检测用户离开字段时是否没有字符/数字?
不幸的是,我无法区分用户是输入了 0 还是完全删除了文本框中的字符。This.Value 在这两种情况下都是 0,VARTYPE(This.Value( 是 "N",EMPTY(This.Value( 是 .T。
背景:后来真正输入的数字应该作为数字进入数据库,而删除的输入字段应该存储为 .零。(是的,相应的表列接受空值(
你没有说文本框是否绑定到表列(即 ControlSource = mytable.myfield(,但我假设它是。
我认为如果文本框绑定到列,您将无法执行此操作。您必须取消绑定它,并手动处理在记录导航等上填充它。
然后,您可以按如下方式进行检查:
在 TextBox init(( 方法中:
this.NullDisplay = ''
return .t.
在 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