2

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

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

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

4

1 回答 1

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;
于 2012-05-14T21:08:11.580 回答