【问题标题】:Disable 'next' button on the component page when there are no selected components没有选定组件时禁用组件页面上的“下一步”按钮
【发布时间】:2011-12-07 05:35:10
【问题描述】:

我正在使用 NSIS 2.46 为我的 Windows 应用程序创建安装程序,我有一个包含 12 个复选框的组件页面,即我的 NSIS 代码中的 12 个部分,现在我想禁用“下一步”按钮,如果没有部分由用户检查,我正在使用以下代码:

不知何故,它不接受 R9 以上的 R 寄存器...

    SectionGetFlags ${section11} $R10 
    SectionGetFlags ${section12} $R11

我得到的编译器错误是

如果组件超过 10 个,请告诉我如何禁用“下一步”按钮...

【问题讨论】:

  • 将节标志与 0 进行比较是不安全的,您应该在 section.nsh 中使用 SectionFlagIsSet 辅助宏
  • 为什么要粘贴代码图片? Stackoverflow 支持代码块,点击编辑器工具栏中红色问号获取帮助或查看stackoverflow.com/editing-help
  • 好的,我不知道..谢谢:)

标签: installation nsis


【解决方案1】:

基本的 NSIS 寄存器是 $0...$9 和 $R0...$R9,因此您应该在最后两个部分使用 $1 和 $2。或者,您可以根据需要创建更多变量; Var /GLOBAL R10.

如果 section1 到 section12 的编号没有间隙,您可以使用循环:

!include LogicLib.nsh

Section A S_1
SectionEnd
Section /o B S_2
SectionEnd
Section C S_3
SectionEnd


Function .onSelChange
StrCpy $0 0
StrCpy $1 ${S_1}
${DoWhile} $1 <= ${S_3}
    ${If} ${SectionIsSelected} $1
        StrCpy $0 1
        ${ExitDo}
    ${EndIf}
    IntOp $1 $1 + 1
${Loop}
GetDlgItem $1 $HwndParent 1
EnableWindow $1 $0
FunctionEnd

【讨论】:

    猜你喜欢
    • 2013-05-09
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 2023-03-06
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多