InnoSetup:如果未选择任何组件,请返回组件页面

时间:2013-12-19 21:00:11

标签: inno-setup

我正在尝试在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;

1 个答案:

答案 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类似的属性,也没有这类东西的直接函数,所以这对我来说当然是一个可靠的选择,除非你使用单选按钮,其中可能总是选择一个选项。在这种情况下,您需要扩展上述代码以确定项目的类型,并仅检查复选框类型项的状态。