按上一步返回自定义页面后原控件置灰失效问题
优质
小牛编辑
129浏览
2023-12-01
问: 自定义的页面在创建函数置灰了控件,但是进行到下个页面,再按上一步,返回到自定义的页面时,发现置灰已经失效了,了解到可能创建函数只执行一次的结果。想问一下,有什么方法解决这个问题,下面是这一部份的源码:
UninstPage custom un.nsDialogsChoicePage un.nsDialogsChoicePageLeave Var ServerStat Var ClientStat Var CheckboxServer Var CheckboxServer_State Var CheckboxClient Var CheckboxClient_State Function un.nsDialogsChoicePage nsDialogs::Create /NOUNLOAD 1018 Pop $Dialog ${If} $Dialog == error Abort ${EndIf} ${NSD_CreateCheckbox} 0 30u 100% 10u "XX" Pop $CheckboxServer ${NSD_CreateCheckbox} 0 60u 100% 10u "XX" Pop $CheckboxClient ServerStat="yes" ${If} $ServerStat != "yes" FindWindow $0 "#32770" "" $HWNDPARENT GetDlgItem $0 $0 1201 EnableWindow $0 0 ${EndIf} ClientStat="" ${If} $ClientStat != "yes" FindWindow $0 "#32770" "" $HWNDPARENT GetDlgItem $0 $0 1202 EnableWindow $0 0 ${EndIf} ${If} $CheckboxServer_State == ${BST_CHECKED} ${NSD_Check} $CheckboxServer ${EndIf} ${If} $CheckboxClient_State == ${BST_CHECKED} ${NSD_Check} $CheckboxClient ${EndIf} nsDialogs::Show FunctionEnd Function un.nsDialogsChoicePageLeave1 ${NSD_GetState} $CheckboxClient $CheckboxClient_State ${NSD_GetState} $CheckboxServer $Checkboxserver_State FunctionEnd
答:修改下面两段
1、
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 1201
EnableWindow $0 0
修改为:
EnableWindow $CheckboxServer 0
2、
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 1202
EnableWindow $0 0
修改为:
EnableWindow $CheckboxClient 0
在$CheckboxServer $CheckboxClient这两个变量中,分别保存的就是${NSD_CreateCheckbox}创建的那两个Checkbox控件的句柄,所以直接设置控件状态即可。