如何通过复选框启用或禁用“下一步”按钮?

时间:2015-06-18 12:43:48

标签: inno-setup

我想要像这样的Next按钮事件:

  

如果用户选中复选框(不是单选按钮),则会显示下一个按钮   被启用;否则它将被禁用。

我的代码:

if CheckBox.Checked then
  WizardForm.NextButton.Enabled := True
else
  WizardForm.NextButton.Enabled := False;

但这些代码需要刷新当前页面(例如,返回上一页并再次返回当前页面);否则,如果用户选中该复选框,则不会启用下一个按钮。

如何在不刷新页面的情况下执行此操作,如许可协议单选按钮(动态下一个按钮)?

2 个答案:

答案 0 :(得分:1)

我无法理解这个功能,但据我所知,您正在寻找一种处理复选框状态更改事件的方法。这就是复选框OnClick事件的用途。例如:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
procedure CheckBoxClick(Sender: TObject);
begin
  WizardForm.NextButton.Enabled := TNewCheckBox(Sender).Checked;
end;

procedure InitializeWizard;
var
  CheckBox: TNewCheckBox;
begin
  CheckBox := TNewCheckBox.Create(WizardForm);
  CheckBox.Parent := WizardForm;
  CheckBox.Top := WizardForm.BackButton.Top;
  CheckBox.Left := 8;
  CheckBox.Checked := True;
  CheckBox.Caption := 'Can I continue?';
  CheckBox.OnClick := @CheckBoxClick;
end;

答案 1 :(得分:0)

听起来您正在尝试实施许可页面。

Inno已经对此有所支持;只需将LicenseFile setting设置为包含您要显示的许可证文本的本地txt或rtf文件的名称。

然后,Inno会将此文本编译到安装程序中,并显示带有“是/否”单选按钮的许可页面,并且只有在用户选择“是”选项后才允许用户继续安装。