VFP-FoxPro-文本框:如何区分空输入和0输入

问题描述 投票:0回答:1

我正在维护旧版VFP应用程序。

有一个用于数字输入的文本框。在验证事件中,我要检查用户是否输入了数字或文本框为空。

如何检测用户是否在字段中没有字符/数字?

[很遗憾,我无法区分用户输入0还是完全删除了文本框中的字符。在两种情况下,This.Value均为0,并且VARTYPE(This.Value)为“ N”,而EMPTY(This.Value)为.T。

[背景:以后真正输入的数字应作为该数字输入数据库,而删除的输入字段应存储为.NULL。 (是的,相应的表列接受Null值)

null textbox visual-foxpro is-empty
1个回答
0
投票

您不说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     
© www.soinside.com 2019 - 2024. All rights reserved.