Inno Setup:TInputOptionWizardPage 禁用的单选按钮看起来部分启用(错误?)
Inno Setup: TInputOptionWizardPage disabled radio buttons look partially enabled (bug?)
我在我的 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;
这基本上是可行的,但按钮的外观存在一些奇怪的错误。在第一个和第二个按钮都被禁用(第三个按钮永远不会被禁用)的机器上进行测试时,当我第一次到达这个自定义页面时,如果 none 的选项是 select,它们看起来像这样:
这很微妙,但如果仔细观察,您会注意到前两个单选按钮(不是它们的文本)看起来仍然部分启用(并且程度不同!)。
如果我然后 select 第三个选项(这台机器上只有一个可用),点击返回然后再次刷新页面按钮然后看起来正确:
有谁知道 Inno Setup 到底在做什么,以及如何在 none 按钮被 select 编辑时让按钮看起来完全禁用?
我可以重现问题。
它似乎发生在焦点项目被禁用时。默认情况下,焦点项目是第一个。确保将 ItemIndex
设置为(第一个)启用项目的索引。
installSelectPage.CheckListBox.ItemIndex := ...;
我在我的 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;
这基本上是可行的,但按钮的外观存在一些奇怪的错误。在第一个和第二个按钮都被禁用(第三个按钮永远不会被禁用)的机器上进行测试时,当我第一次到达这个自定义页面时,如果 none 的选项是 select,它们看起来像这样:
这很微妙,但如果仔细观察,您会注意到前两个单选按钮(不是它们的文本)看起来仍然部分启用(并且程度不同!)。
如果我然后 select 第三个选项(这台机器上只有一个可用),点击返回然后再次刷新页面按钮然后看起来正确:
有谁知道 Inno Setup 到底在做什么,以及如何在 none 按钮被 select 编辑时让按钮看起来完全禁用?
我可以重现问题。
它似乎发生在焦点项目被禁用时。默认情况下,焦点项目是第一个。确保将 ItemIndex
设置为(第一个)启用项目的索引。
installSelectPage.CheckListBox.ItemIndex := ...;