我正在尝试在wpPreparing
页面上放置一个标签,以指示在运行新安装之前卸载现有版本。这是我的代码:
function PrepareToInstall(var NeedsRestart: Boolean): String;
var
UninstallingLabel: TNewStaticText;
intResultCode: Integer;
begin
with UninstallingLabel do
begin
Caption := 'Uninstalling existing version...';
Left := WizardForm.StatusLabel.Left;
Top := WizardForm.StatusLabel.Top;
Parent := wpPreparing.Surface;
end;
if strExistingInstallPath <> '' then
begin
Exec(GetUninstallString, '/verysilent /suppressmsgboxes', '', SW_HIDE,
ewWaitUntilTerminated, intResultCode);
end;
end;
问题是它似乎不喜欢Parent := wpPreparing.Surface
并且编译失败并带有
分号(;)预期
错误。向自定义创建的页面添加标签时,此语法有效。为什么在尝试将其添加到wpPreparing
时会失败?
答案 0 :(得分:1)
我已经重播了你的代码。如果您仅使用-ansi
作为父级,则它可以正常工作。但是它位于表格的左上角......
WizardForm
是一个常量的名称,用于保存相应页面的ID。
您必须创建wpPreparing
答案 1 :(得分:1)
wpPreparing
不是一个对象,它只是一个数值常数。
WizardForm.PreparingPage
包含对“准备安装”页面的引用。请注意,它已经是TNewNotebookPage
类型,而不是TWizardPage
。所以你直接用它作为父母。
另请注意,StatusLabel
位于“正在安装”页面上。您可能希望将新标签与PreparingLabel
相关联。
您必须创建UninstallingLabel
。
UninstallingLabel := TNewStaticText.Create(WizardForm);
with UninstallingLabel do
begin
Caption := 'Uninstalling existing version...';
Left := WizardForm.PreparingLabel.Left;
Top := WizardForm.PreparingLabel.Top;
Parent := WizardForm.PreparingPage;
end;
虽然你真的想隐藏PreparingLabel
(当你使用它的坐标时)。
重新使用它呢?
WizardForm.PreparingLabel.Caption := 'Uninstalling existing version...';