是否适合在CurPageChanged过程中创建控件?

时间:2012-05-14 20:28:38

标签: inno-setup

我在CurPageChanged中有代码,它在许可证窗口中添加了一个按钮。我的CurPageChanged开头是这样的:

procedure CurPageChanged(CurPageID: Integer);
var Button123 TButton;
begin
  if CurPageID = wpLicense then begin
    Button123 := TButton.Create(WizardForm.LicenseMemo.Parent);

我的问题是,每次将页面更改为wpLicense页面时都不会创建按钮吗?因此,如果用户点击许可证对话框,然后返回到它,是否会创建另一个按钮?如何确保只创建一个按钮?我正在寻找的是将控件--once--添加到现有wp的最合适的程序。感谢

1 个答案:

答案 0 :(得分:4)

  

我的问题是,每次将页面更改为wpLicense页面时都不会创建按钮吗?因此,如果用户点击许可证对话框,然后返回到它,是否会创建另一个按钮?

是的,每次都会创建多个按钮。因为页面不会被破坏,所以它们上的控件不会被破坏。但是你实际上可以利用这个事实来创建一个控件,然后在必要时显示/隐藏它。

首先,修改InitializeWizard方法,该方法仅在显示向导之前调用。在这里创建按钮,如下所示:

procedure InitializeWizard();
var
  MyButton: TButton;
begin
  MyButton := TButton.Create(WizardForm.LicenseMemo.Parent);
  MyButton.Parent := WizardForm.LicenseMemo.Parent;
  MyButton.Top := 0;
  MyButton.Left := 0;
  MyButton.Caption := 'My Custom Button';
  ...
end;