检查 Inno Setup 中所有复选框的任务项,忽略单选按钮控件

问题描述 投票:0回答:1

我有以下(尝试)通用功能来选择 Inno Setup 中的所有任务项:

procedure CheckAllTasks();
var
  I: Integer;
begin
  for I := 0 to WizardForm.TasksList.Items.Count - 1 do begin
    if WizardForm.TasksList.ItemEnabled[I] then begin
      WizardForm.TasksList.Checked[I] := True;
    end;
  end;
end;

此方法的不便之处在于,它还会通过选择任务列表项数组中的最后一个单选按钮来影响当前单选按钮的选择,如下例所示:

enter image description here

然后,我只想忽略使用此功能的单选按钮。

我正在分析 TNewCheckListBox 及其类继承,希望找到一些基本方法来帮助我识别控件的类型,但我无法做到。功能

WizardForm.TasksList.ItemObject[Index]
WizardForm.TasksList.Items.Objects[Index]
似乎没有返回可转换为
TObject
TComponent
TControl

我面临的主要问题是

WizardForm.TasksList.Items
是一个
TStrings
类,我无法弄清楚哪个控件对应于每个字符串项。

请注意,我知道如何编辑

[Tasks]
部分以在安装程序 UI 中添加顶级项目复选框,这将使我能够轻松选中/取消选中该组中剩余的所有项目。这不是我要找的。

installation inno-setup pascalscript
1个回答
0
投票

恐怕没有可用的 API。

  • 您只能通过检查单选按钮的标题或索引来跳过单选按钮
  • 对于大量任务,可能需要实现一些预处理器宏/标签,您可以在
    Tasks
    部分中使用它们来标记单选按钮。并在 Pascal Script 中使用这些标签。但这对于你的几篇文章来说就有点过分了。
© www.soinside.com 2019 - 2024. All rights reserved.