我希望如果没有选择任何RadioButtons,那么,当按下Next按钮时,它应该发出警告,请选择ATLEAST ONE ITEM,它不应该转到下一个Dialog。
另外,我希望如果用户选择选项:UPDATE EXISTING SOFTWARE,则只复制一些文件,如果选择了另一个radiobutton,则复制所有文件,
是否可以使用部分或功能?我可以调用一个Section,就像选择RadioButton 1一样,然后调用SECTION CREATEALLFILES,否则调用SECTION CREATEONLYTWOFILES?
根据我的说法,我想我想要代码如何保持这两个RadioButton的ID并相应地使用它们来调用不同的部分或功能。代码是什么?请帮帮忙?
此外,在此页面上按下NEXT后,下一个对话框将如下图所示:我想显示LABEL,DEMO是否已完成,或者UPDATE是否正在运行,为此我将使用Resource Hacker添加标签,但如何根据用户选择的RadioButton显示该Label并隐藏它
答案 0 :(得分:2)
您可以选择/取消选择部分或仅将逻辑放在一个部分中,此示例同时执行以下操作:
!include nsDialogs.nsh
!include Sections.nsh
var InstallType
Section
#Install common files...
${If} $InstallType == DEMO
#Do demo specific stuff
${Else}
#Do update specific stuff
${EndIf}
SectionEnd
Section "" SEC_DEMO
#Install demo..
SectionEnd
Section "" SEC_UPDATE
#Do update..
SectionEnd
Page custom InstTypePageCreate InstTypePageLeave
Function InstTypePageCreate
nsDialogs::Create 1018
pop $0
${NSD_CreateRadioButton} 0 50u 100% 10u "Demo"
pop $1
${IfThen} $InstallType == DEMO ${|} ${NSD_Check} $1 ${|}
${NSD_CreateRadioButton} 0 70u 100% 10u "Update"
pop $2
${IfThen} $InstallType == UPDATE ${|} ${NSD_Check} $2 ${|}
nsDialogs::Show
FunctionEnd
Function InstTypePageLeave
${NSD_GetState} $1 $0
${If} $0 = ${BST_CHECKED}
StrCpy $InstallType DEMO
!insertmacro UnselectSection ${SEC_UPDATE}
!insertmacro SelectSection ${SEC_DEMO}
${Else}
${NSD_GetState} $2 $0
${If} $0 = ${BST_CHECKED}
StrCpy $InstallType UPDATE
!insertmacro UnselectSection ${SEC_DEMO}
!insertmacro SelectSection ${SEC_UPDATE}
${Else}
MessageBox MB_ICONSTOP "You must select something!"
Abort
${EndIf}
${EndIf}
FunctionEnd
要在下一页上设置文本,只需在测试$ InstallType的if块中使用${NSD_SetText} $hwndYourLabel "Text"
和ShowWindow(此代码需要在该页面的show function callback(MUI_PAGE_CUSTOMFUNCTION_SHOW)中)