VFP - FoxPro - Textbox: как различить guish между пустым вводом и 0 вводом - PullRequest
0 голосов
/ 26 января 2020

Я поддерживаю устаревшее приложение VFP.

Существует текстовое поле для ввода чисел c. В событии проверки я хочу проверить, ввел ли пользователь число или оставил текстовое поле пустым.

Как определить, оставил ли пользователь поле без символов / цифр?

К сожалению, я не могу различить guish, если пользователь ввел 0 или полностью удалил символы в текстовом поле. Значение This.Value равно 0 в обоих случаях, а VARTYPE (This.Value) равно "N", а EMPTY (This.Value) равно .T.

Фон: позднее введенные цифры должны go в качестве числа для база данных, тогда как удаленное поле ввода должно быть сохранено как .NULL. (да соответствующий столбец таблицы принимает нулевые значения)

1 Ответ

0 голосов
/ 27 января 2020

Вы не говорите, привязан ли TextBox к столбцу таблицы (т.е. ControlSource = mytable.myfield), но я предполагаю, что это так.

Не думаю, что вы сможете это сделать это если TextBox привязан к столбцу. Вам придется отменить привязку и обработать заполнение в режиме навигации по записям et c вручную.

Затем вы можете проверить следующее:

В методе 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     
...