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

时间:2015-01-08 07:48:04

标签: nsis

我有可编辑的TextField。 但是当用户单击Checkbox时,我需要禁用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 个答案:

答案 0 :(得分:0)

您可以使用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将它们转换为某些临时变量,并在用户取消选中该复选框时将其恢复。