自定义 TLabel 未显示在 Inno Setup 的 FinishedPage 上
Custom TLabel not displaying on FinishedPage in Inno Setup
我一定是遗漏了一些明显的东西。我正在尝试将 link 添加到 wpFinished
的发行说明中,但似乎无法显示:
我有一个文件 finishedPage.iss
,我通过 #include "InnoDialogs\finishedPage.iss";
包含了它
该文件包含以下内容:
[Run]
Filename: "{app}\bin\{#MyAppExeName}"; \
Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; \
Flags: nowait postinstall skipifsilen
[Code]
{ procedures to deal with page interaction }
procedure ReleaseNotesClick(Sender: TObject);
var
errorCode: Integer;
begin
ShellExec('','https://myUrl.com/Release_Notes', '', '', SW_SHOW, ewNoWait, errorCode)
end;
{ build the page }
procedure FinishedPage_Create;
var
ReleaseNotesLink: TLabel;
begin
ReleaseNotesLink := TLabel.Create(WizardForm);
ReleaseNotesLink.Parent := WizardForm.FinishedPage;
ReleaseNotesLink.Caption := 'Read the Releasenotes';
ReleaseNotesLink.Enabled := True;
ReleaseNotesLink.Visible := True;
ReleaseNotesLink.AutoSize := True;
ReleaseNotesLink.Left := WizardForm.FinishedLabel.Left;
ReleaseNotesLink.Top := WizardForm.FinishedLabel.Top + ScaleY(100);
ReleaseNotesLink.OnClick := @ReleaseNotesClick;
ReleaseNotesLink.ParentFont := True;
ReleaseNotesLink.Font.Style := ReleaseNotesLink.Font.Style + [fsUnderline, fsBold];
ReleaseNotesLink.Font.Color := clBlue;
ReleaseNotesLink.Cursor := crHand;
end;
在我的主安装程序文件的 CurPageChanged
过程中,我有:
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpFinished then
begin
FinishedPage_Create();
end;
end;
这编译得很好,但我无法让它显示出来。我也尝试了不同的位置,想也许它只是被其他东西吸引了。我正在使用相同的过程将元素添加到其他页面...
知道我遗漏了什么吗?
您的标签隐藏在 RunList
后面,它占据了页面的其余部分。
你必须缩小列表。例如:
WizardForm.RunList.Height := ScaleY(24);
ReleaseNotesLink.Left := WizardForm.RunList.Left;
ReleaseNotesLink.Top := WizardForm.RunList.Top + WizardForm.RunList.Height + ScaleY(8);
我一定是遗漏了一些明显的东西。我正在尝试将 link 添加到 wpFinished
的发行说明中,但似乎无法显示:
我有一个文件 finishedPage.iss
,我通过 #include "InnoDialogs\finishedPage.iss";
包含了它
该文件包含以下内容:
[Run]
Filename: "{app}\bin\{#MyAppExeName}"; \
Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; \
Flags: nowait postinstall skipifsilen
[Code]
{ procedures to deal with page interaction }
procedure ReleaseNotesClick(Sender: TObject);
var
errorCode: Integer;
begin
ShellExec('','https://myUrl.com/Release_Notes', '', '', SW_SHOW, ewNoWait, errorCode)
end;
{ build the page }
procedure FinishedPage_Create;
var
ReleaseNotesLink: TLabel;
begin
ReleaseNotesLink := TLabel.Create(WizardForm);
ReleaseNotesLink.Parent := WizardForm.FinishedPage;
ReleaseNotesLink.Caption := 'Read the Releasenotes';
ReleaseNotesLink.Enabled := True;
ReleaseNotesLink.Visible := True;
ReleaseNotesLink.AutoSize := True;
ReleaseNotesLink.Left := WizardForm.FinishedLabel.Left;
ReleaseNotesLink.Top := WizardForm.FinishedLabel.Top + ScaleY(100);
ReleaseNotesLink.OnClick := @ReleaseNotesClick;
ReleaseNotesLink.ParentFont := True;
ReleaseNotesLink.Font.Style := ReleaseNotesLink.Font.Style + [fsUnderline, fsBold];
ReleaseNotesLink.Font.Color := clBlue;
ReleaseNotesLink.Cursor := crHand;
end;
在我的主安装程序文件的 CurPageChanged
过程中,我有:
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpFinished then
begin
FinishedPage_Create();
end;
end;
这编译得很好,但我无法让它显示出来。我也尝试了不同的位置,想也许它只是被其他东西吸引了。我正在使用相同的过程将元素添加到其他页面...
知道我遗漏了什么吗?
您的标签隐藏在 RunList
后面,它占据了页面的其余部分。
你必须缩小列表。例如:
WizardForm.RunList.Height := ScaleY(24);
ReleaseNotesLink.Left := WizardForm.RunList.Left;
ReleaseNotesLink.Top := WizardForm.RunList.Top + WizardForm.RunList.Height + ScaleY(8);