我正在尝试在InnoSetup中编写一个pascal函数,要求用户在继续之前选择至少一个组件。这有效,但似乎有点脏。还有另一种方法吗?
我发现没有关于如何检查是否选择任何组件的文档。
我的代码如下:
function NextButtonClick(PageID: Integer): Boolean;
begin
Result:= True;
if PageID = wpSelectComponents then begin
S := FmtMessage('%1', [WizardSelectedComponents(false)]);
if S = '' then begin
MsgBox('No items selected, please select at least one item', mbError, MB_OK);
Result := False;
end;
end;
end;
答案 0 :(得分:2)
你所展示的方式似乎是目前最短的(尽管我对你和你都不感到自信)。我能想到的唯一选择是迭代ComponentsList
并查看至少有一个项目是否将Checked
属性返回为True:
[Code]
function IsAnyComponentSelected: Boolean;
var
I: Integer;
begin
Result := False;
for I := 0 to WizardForm.ComponentsList.Items.Count - 1 do
if WizardForm.ComponentsList.Checked[I] then
begin
Result := True;
Exit;
end;
end;
目前CheckedCount
没有ComponentsList
类似的属性,也没有这类东西的直接函数,所以这对我来说当然是一个可靠的选择,除非你使用单选按钮,其中可能总是选择一个选项。在这种情况下,您需要扩展上述代码以确定项目的类型,并仅检查复选框类型项的状态。