Inno Setup:禁用TInputOptionWizardPage的单选按钮看起来已部分启用(错误?)

时间:2019-04-01 00:15:57

标签: 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到底在做什么,以及在没有选择任何按钮的情况下如何使按钮看起来完全禁用?

1 个答案:

答案 0 :(得分:2)

我可以重现问题。

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

installSelectPage.CheckListBox.ItemIndex := ...;