我在CurPageChanged中有代码,它在许可证窗口中添加了一个按钮。我的CurPageChanged开头是这样的:
procedure CurPageChanged(CurPageID: Integer);
var Button123 TButton;
begin
if CurPageID = wpLicense then begin
Button123 := TButton.Create(WizardForm.LicenseMemo.Parent);
我的问题是,每次将页面更改为wpLicense页面时都不会创建按钮吗?因此,如果用户点击许可证对话框,然后返回到它,是否会创建另一个按钮?如何确保只创建一个按钮?我正在寻找的是将控件--once--添加到现有wp的最合适的程序。感谢
答案 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;