没有选定组件时禁用组件页面上的“下一步”按钮

Posted

技术标签:

【中文标题】没有选定组件时禁用组件页面上的“下一步”按钮【英文标题】: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 辅助宏 为什么要粘贴代码图片? *** 支持代码块,点击编辑器工具栏中红色问号获取帮助或查看***.com/editing-help 好的,我不知道..谢谢:) 【参考方案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

【讨论】:

以上是关于没有选定组件时禁用组件页面上的“下一步”按钮的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法禁用设置为数字的editText的“下一步”按钮?

Qt布局管理器综合实例

需要帮助在一个动态文本框中显示多个输入文本组件

存储选定的行 ID

如果 WizardForm.NextButton 被禁用,我如何调用下一步执行?

在 jqgrid 下一步按钮单击时,未填充数据