Inno setup InnoSetup:如果未选择任何组件,请返回组件页面
我试图在InnoSetup中编写一个pascal函数,要求用户在继续之前至少选择一个组件。这行得通,但似乎有点脏。还有别的办法吗 我发现绝对没有关于如何检查是否选择了任何组件的文档 我的代码如下:Inno setup InnoSetup:如果未选择任何组件,请返回组件页面,inno-setup,Inno Setup,我试图在InnoSetup中编写一个pascal函数,要求用户在继续之前至少选择一个组件。这行得通,但似乎有点脏。还有别的办法吗 我发现绝对没有关于如何检查是否选择了任何组件的文档 我的代码如下: function NextButtonClick(PageID: Integer): Boolean; begin Result:= True; if PageID = wpSelectComponents then begin S := FmtMessage('%1', [Wizar
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;
你展示的方式似乎是目前可用的最短的(尽管我和你一样对此不太自信)。我能想到的唯一替代方法是迭代
组件列表
,查看是否至少有一个项将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;
目前没有
ComponentsList
的CheckedCount
like属性,也没有这类东西的任何直接函数,因此在我看来,这当然是一个可靠的替代方法,除非您使用单选按钮,其中可能总是选择一个选项。在这种情况下,您需要扩展上述代码,以确定项目的类型,并仅检查复选框类型项目的状态。太棒了,谢谢。我最后在NextButtonClick
中调用了IsAnyComponentSelected
,它工作得非常完美。