Inno Setup:确保用户已阅读“信息”页面

时间:2016-12-03 15:58:39

标签: inno-setup

我有一个Information页面,该页面是使用 infobefore 文件激活的:

[Setup]
InfoBeforeFile=infobefore.txt

我想:

  • 添加一个复选框(或几个复选框),用户必须检查该复选框以表明他已注意到这些信息。

  • 只有在核对右边的复选框时才允许用户继续操作。我想要禁用 Next 按钮或显示消息框,无论更简单。

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:2)

只需在InfoBeforePage页面上添加一个新复选框即可。并根据复选框状态更新NextButton状态。

[Setup]
InfoBeforeFile=infobefore.txt

[Code]

var
  InfoBeforeCheck: TNewCheckBox;

procedure CheckInfoBeforeRead;
begin
  { Enable the NextButton only if InfoBeforeCheck is checked or }
  { installer is running in the silent mode }
  WizardForm.NextButton.Enabled := InfoBeforeCheck.Checked or WizardSilent;
end;

procedure InfoBeforeCheckClick(Sender: TObject);
begin
  { Update state of the Next button, whenever the InfoBeforeCheck is toggled }
  CheckInfoBeforeRead;
end;  

procedure InitializeWizard();
begin
  InfoBeforeCheck := TNewCheckBox.Create(WizardForm);
  InfoBeforeCheck.Parent := WizardForm.InfoBeforePage;
  { Follow the License page layout }
  InfoBeforeCheck.Top := WizardForm.LicenseNotAcceptedRadio.Top;
  InfoBeforeCheck.Left := WizardForm.LicenseNotAcceptedRadio.Left;
  InfoBeforeCheck.Width := WizardForm.LicenseNotAcceptedRadio.Width;
  InfoBeforeCheck.Height := WizardForm.LicenseNotAcceptedRadio.Height;
  InfoBeforeCheck.Caption := 'I swear I read this';
  InfoBeforeCheck.OnClick := @InfoBeforeCheckClick;

  { Make the gap between the InfoBeforeMemo and the InfoBeforeCheck the same }
  { as the gap between LicenseMemo and LicenseAcceptedRadio }
  WizardForm.InfoBeforeMemo.Height :=
    ((WizardForm.LicenseMemo.Top + WizardForm.LicenseMemo.Height) -
     WizardForm.InfoBeforeMemo.Top) +
    (InfoBeforeCheck.Top - WizardForm.LicenseAcceptedRadio.Top);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpInfoBefore then
  begin
    { Initial state of the Next button }
    CheckInfoBeforeRead;
  end;
end;

I swear I read this