Inno setup Inno设置:TInputOptionWizardPage禁用单选按钮看起来部分启用(错误?)

Inno setup Inno设置:TInputOptionWizardPage禁用单选按钮看起来部分启用(错误?),inno-setup,pascalscript,Inno Setup,Pascalscript,我的Inno安装脚本中有一个自定义页面,我通过执行以下操作创建该页面: var installSelectPage:t输入选项向导页面; { ... } 程序初始化; 开始 installSelectPage:= CreateInputOptionPage(wpInfoBefore, “选择目标位置”、“应在何处安装{#MyAppName}”, '请选择要修改的{#MyGameName}发行版', 正确的,错误的); radioIndex_retailInstall:=installSelect

我的Inno安装脚本中有一个自定义页面,我通过执行以下操作创建该页面:

var
installSelectPage:t输入选项向导页面;
{ ... }
程序初始化;
开始
installSelectPage:=
CreateInputOptionPage(wpInfoBefore,
“选择目标位置”、“应在何处安装{#MyAppName}”,
'请选择要修改的{#MyGameName}发行版',
正确的,错误的);
radioIndex_retailInstall:=installSelectPage.Add('Retail/DVD');
radioIndex_steamInstall:=installSelectPage.Add('Steam');
radioIndex\u manualInstall:=installSelectPage.Add('手动目录选择')
然后在随后的
InitializeWizard
过程中的某个时刻,我读取了一些注册表项,并禁用了未找到相应项的单选按钮:

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

  if not(steamInstallAvailable) then
    installSelectPage.CheckListBox.ItemEnabled[radioIndex_steamInstall] := False;
这主要是可行的,但是按钮的外观有一些奇怪的错误。在第一个和第二个按钮都被禁用(第三个按钮从未被禁用)的机器上进行测试时,当我第一次到达这个自定义页面时,如果没有选择任何选项,它们看起来如下所示:

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

如果我随后选择第三个选项(本机上只有一个可用),请单击“上一步”,然后再次单击“下一步”刷新页面,按钮看起来正确:


有人知道heck Inno安装程序在做什么,以及如何在没有选择任何按钮的情况下使按钮看起来完全禁用吗?

我可以重现这个问题

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

installSelectPage.CheckListBox.ItemIndex := ...;

我最初认为这与焦点问题有关,但由于当你进入此页面时,“下一步”按钮会突出显示,并且明显具有程序的整体焦点(点击tab键沿背面、下一步和取消按钮移动),因此我没有进一步推动。我没有意识到CheckListBox本身有一个成员跟踪focus以获得自己的选项。将焦点更改为我选择的任何未禁用的单选按钮确实解决了问题。还值得注意的是,根本问题可能与该职位有关: