我有以下(尝试)通用功能来选择 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;
此方法的不便之处在于,它还会通过选择任务列表项数组中的最后一个单选按钮来影响当前单选按钮的选择,如下例所示:
然后,我只想忽略使用此功能的单选按钮。
我正在分析 TNewCheckListBox 及其类继承,希望找到一些基本方法来帮助我识别控件的类型,但我无法做到。功能
WizardForm.TasksList.ItemObject[Index]
和
WizardForm.TasksList.Items.Objects[Index]
似乎没有返回可转换为 TObject
或 TComponent
的 TControl
。
我面临的主要问题是
WizardForm.TasksList.Items
是一个 TStrings
类,我无法弄清楚哪个控件对应于每个字符串项。
请注意,我知道如何编辑
[Tasks]
部分以在安装程序 UI 中添加顶级项目复选框,这将使我能够轻松选中/取消选中该组中剩余的所有项目。这不是我要找的。
恐怕没有可用的 API。
Tasks
部分中使用它们来标记单选按钮。并在 Pascal Script 中使用这些标签。但这对于你的几篇文章来说就有点过分了。