Очистить значение текстового поля при нажатии на флажок nsis

У меня есть TextField, который можно редактировать. Но когда пользователь нажимает на флажок, мне нужно отключить TextField, а также очистить значение текстового поля. Я отключил поле, но не смог очистить значение TextField. Поэтому, пожалуйста, дайте мне знать, как это сделать.

Примечание: Очистить значение означает, что если TextField имеет какое-либо значение, то оно должно быть пустым на. Установите флажок.

Код:

        ${NSD_CreateText} 50u 67u 200u 12u ""
        Pop $txtUsername
        ${NSD_SetText} $txtUsername $Text_txtUsername

        ${NSD_CreatePassword} 50u 80u 200u 12u ""
        Pop $pwdPassword
        ${NSD_SetText} $pwdPassword $Text_pwdPassword

        ${NSD_CreateCheckbox} 0 96u 100% 12u "&Use Windows Login (Domain account must have 'log on as a service' right.)"
        Pop $chkCheckbox
        ${NSD_OnClick} $chkCheckbox EnDisableWindowsLoginButton

Function EnDisableWindowsLoginButton
    Pop $chkCheckbox
    ${NSD_GetState} $chkCheckbox $sqlLogin
    ${If} $sqlLogin == 1
        EnableWindow $txtUsername 0
        EnableWindow $pwdPassword 0
    ${Else}
        EnableWindow $txtUsername 1
        EnableWindow $pwdPassword 1
    ${EndIf}

FunctionEnd

1 ответ

Решение

Вы можете установить значение текстового поля с помощью NSD_SetText. Действительно, похоже, что вы уже используете его для инициализации этих полей. Попробуйте что-то вроде этого:

Function EnDisableWindowsLoginButton
    Pop $chkCheckbox
    ${NSD_GetState} $chkCheckbox $sqlLogin
    ${If} $sqlLogin == 1
        ${NSD_SetText} $txtUsername ""
        ${NSD_SetText} $pwdPassword ""
        EnableWindow $txtUsername 0
        EnableWindow $pwdPassword 0
    ${Else}
        EnableWindow $txtUsername 1
        EnableWindow $pwdPassword 1
    ${EndIf}
FunctionEnd

Если вы не хотите терять значения, введенные пользователем, вы можете StrCpy их некоторые временные переменные и восстановить их, если / когда пользователь снимает флажок.

Другие вопросы по тегам