Цитата AlekseyPopovv:
Как сохранить статус CheckBox на кастомных страницах?
К примеру снимаю галочку с CheckBox и возвращаюсь на предыдущую страницу, потом обратно на следующую и галочка опять стоит. »
|
Завести под каждую галку переменную.
При создании страницы выставить статус галки из переменной.
При выходе со страницы (leave-функция и onBack-колбэк) записать статус галки в переменную.
Скрытый текст
Код:
![Выделить весь код](images/misc/selectcode.png)
ShowInstDetails show
RequestExecutionLevel user
InstallColors /windows
InstallDir $TEMP
Page components
page custom OptionsSaveLoadTest OptionsSaveLoadTest_Leave
Page directory
Page instfiles instfiles_pre
!include LogicLib.nsh
!include nsDialogs.nsh
!include Sections.nsh
Var Option1
Var Option2
Var hOption1
Var hOption2
Section
DetailPrint 'Exec mandatory section'
SectionEnd
Section /o '-Option 1' SecOpt1
DetailPrint 'Exec Option1 section'
SectionEnd
Section /o '-Option 2' SecOpt2
DetailPrint 'Exec Option2 section'
SectionEnd
Function OptionsSaveLoadTest
nsDialogs::Create 1018
Pop $0
GetFunctionAddress $0 OptionsSaveLoadTest_OnBack
nsDialogs::OnBack $0
${NSD_CreateCheckbox} 0 0 100% 8u 'Option&1'
Pop $hOption1
${IfThen} $Option1 == ${BST_CHECKED} ${|} ${NSD_Check} $hOption1 ${|}
${NSD_CreateCheckbox} 0 15u 100% 8u 'Option&2'
Pop $hOption2
${IfThen} $Option2 == ${BST_CHECKED} ${|} ${NSD_Check} $hOption2 ${|}
nsDialogs::Show
FunctionEnd
Function OptionsSaveLoadTest_OnBack
${NSD_GetState} $hOption1 $Option1
${NSD_GetState} $hOption2 $Option2
FunctionEnd
Function OptionsSaveLoadTest_Leave
Call OptionsSaveLoadTest_OnBack
FunctionEnd
Function instfiles_pre
${IfThen} $Option1 == ${BST_CHECKED} ${|} !insertmacro SelectSection ${SecOpt1} ${|}
${IfThen} $Option2 == ${BST_CHECKED} ${|} !insertmacro SelectSection ${SecOpt2} ${|}
FunctionEnd
Function .onInit
StrCpy $Option1 ${BST_UNCHECKED}
StrCpy $Option2 ${BST_UNCHECKED}
FunctionEnd