Очистить значение текстового поля при нажатии на флажок 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
их некоторые временные переменные и восстановить их, если / когда пользователь снимает флажок.