使用Inno Setup中的许可证向导页面上的复选框替换单选按钮

时间:2012-05-21 14:25:39

标签: checkbox radio-button custom-controls inno-setup wizard

有没有简单的方法可以在Inno Setup中使用单个(选中/未选中)复选框替换许可向导页面上的标准2单选按钮,而无需创建自定义页面?

1 个答案:

答案 0 :(得分:7)

由于没有设置可以在许可证单选按钮和某些许可证复选框之间切换(至少只是因为WizardForm上没有组件),您需要自己创建。

以下代码隐藏原始许可单选按钮,并在向导初始化时在同一位置创建一个复选框。此许可证复选框正在模拟其OnClick事件处理程序中的单选按钮选择,以保留其原始功能。下面是代码,它允许您访问向导初始化事件范围之外的许可证复选框。如果您以后不需要访问此复选框,则可以使用帖子的this version

[code]

var
  LicenseCheckBox: TNewCheckBox;

procedure OnLicenseCheckBoxClick(Sender: TObject);
var
  LicenseAccepted: Boolean;
begin
  LicenseAccepted := (Sender as TNewCheckBox).Checked;
  WizardForm.LicenseAcceptedRadio.Checked := LicenseAccepted;
  WizardForm.LicenseNotAcceptedRadio.Checked := not LicenseAccepted;
end;

procedure InitializeWizard;
begin
  WizardForm.LicenseAcceptedRadio.Hide;
  WizardForm.LicenseNotAcceptedRadio.Hide;

  LicenseCheckBox := TNewCheckBox.Create(WizardForm);
  LicenseCheckBox.Parent := WizardForm.LicensePage;
  LicenseCheckBox.Left := 0;
  LicenseCheckBox.Top := WizardForm.LicenseMemo.Top + 
    WizardForm.LicenseMemo.Height + 8;
  LicenseCheckBox.Width := WizardForm.LicenseMemo.Width;
  LicenseCheckBox.Caption := ' I accept the license agreement';
  LicenseCheckBox.OnClick := @OnLicenseCheckBoxClick;
end;