单击复选框 nsis 时清除文本字段值

Clear text field value on click the checkbox 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

您可以使用 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 将它们保存到一些临时变量中并恢复它们 if/when 用户取消选中该复选框。