inno-setup - Inno 设置 : TInputOptionWizardPage disabled radio buttons look partially enabled (bug? )

标签 inno-setup pascalscript

我在我的 Inno Setup 脚本中有一个自定义页面,它是通过执行以下操作创建的:

var    
  installSelectPage: TInputOptionWizardPage;
  { ... }

procedure InitializeWizard;
begin
  installSelectPage :=
    CreateInputOptionPage(wpInfoBefore,
     'Select Destination Location', 'Where should {#MyAppName} be installed?',
     'Please select which {#MyGameName} distribution you want to mod',
     True, False);

  radioIndex_retailInstall := installSelectPage.Add('Retail/DVD');
  radioIndex_steamInstall := installSelectPage.Add('Steam');
  radioIndex_manualInstall := installSelectPage.Add('Manual Directory Selection')

然后稍后在 InitializeWizard 过程中的某个时候,我读取了一些注册表项并禁用了未找到相应项的单选按钮:

  if not(retailInstallAvailable) then
    installSelectPage.CheckListBox.ItemEnabled[radioIndex_retailInstall] := False;

  if not(steamInstallAvailable) then
    installSelectPage.CheckListBox.ItemEnabled[radioIndex_steamInstall] := False;

这基本上是可行的,但按钮的外观存在一些奇怪的错误。在第一个和第二个按钮都被禁用(第三个按钮永远不会被禁用)的机器上进行测试时,当我第一次到达这个自定义页面时,如果没有选择任何选项,它们看起来像这样:

Bugged 'disable style' buttons

它很微妙,但如果仔细观察,您会注意到前两个单选按钮(不是它们的文本)看起来仍然部分启用(并且程度不同!)。

如果我然后选择第三个选项(这台机器上只有一个可用),点击返回然后再次点击下一步以刷新页面按钮然后看起来正确:

Correct'disable style' buttons

有谁知道 Inno Setup 到底在做什么,以及如何在没有选择任何按钮的情况下让按钮看起来完全禁用?

最佳答案

我可以重现问题。

它似乎发生在焦点项目被禁用时。默认情况下,焦点项目是第一个。确保将 ItemIndex 设置为(第一个)启用项目的索引。

installSelectPage.CheckListBox.ItemIndex := ...;

关于inno-setup - Inno 设置 : TInputOptionWizardPage disabled radio buttons look partially enabled (bug? ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55446640/

相关文章:

inno-setup - Inno Setup ParseVersion 不可从 [Code] 调用

windows-7 - 如何在 Windows 7 上从 Inno Setup 安装程序执行 "net use"命令?

inno-setup - 在 Inno Setup Pascal Script 中在运行时评估预处理器宏

installation - 用于执行多次安装的安装程序

installation - 使用 Inno Setup 创建硬链接(hard link)

inno-setup - 循环遍历字符串数组 - 类型不匹配

windows - Inno设置引用问题

c# - 如何使用Inno Setup安装Windows服务?

inno-setup - 使用 InnoUnzip 安装后解压缩文件 - 错误 "Invalid prototype"

installation - Inno Setup 中的函数指针