如何使 Inno Setup RunList 清单框透明?
How to make Inno Setup RunList checklist box transparent?
我的安装程序有一个带有图像的自定义完成页面。我为此提到了这个 解决方案。但问题在于完成页面的复选框,它出现在具有白色背景的完成页面图像的顶部。如果我删除了 postinstall
标志,那么它会自动启动我的应用程序。但我希望用户能够像复选框一样进行选择。那么有什么方法可以透明化图像顶部的复选框启动消息吗? TNewCheckBox
会帮忙吗?
[Run]
Filename: "app\My program.exe"; Description: "{cm:LaunchProgram}"; #
Flags: nowait postinstall skipifsilent
在标准的 Inno Setup 中,我认为您无法使 WizardForm.RunList
(TNewCheckListBox
) 透明。但是由于简单的 TNewCheckListBox
是透明的,您可以将 WizardForm.RunList
替换为 TNewCheckListBox
。
[Code]
procedure RunCheckBoxClick(Sender: TObject);
begin
WizardForm.RunList.Checked[0] := TNewCheckBox(Sender).Checked;
end;
procedure CurPageChanged(CurPageID: Integer);
var
RunCheckBox: TNewCheckBox;
begin
if CurPageID = wpFinished then
begin
if (not WizardForm.RunList.Visible) or
(WizardForm.RunList.Items.Count < 1) then
begin
Log('No items to run');
end
else
if WizardForm.RunList.Items.Count > 1 then
begin
Log('More than one item to run, keeping the standard non-transparent run list');
end
else
begin
Log('Replacing the one item in the run list with a simple transparent checkbox');
RunCheckBox := TNewCheckBox.Create(WizardForm);
RunCheckBox.Parent := WizardForm.RunList.Parent;
RunCheckBox.Left := WizardForm.RunList.Left + ScaleX(4);
RunCheckBox.Top := WizardForm.RunList.Top + ScaleY(4);
RunCheckBox.Width := WizardForm.RunList.Width;
RunCheckBox.Height := ScaleY(RunCheckBox.Height);
RunCheckBox.Checked := WizardForm.RunList.Checked[0];
RunCheckBox.Caption := WizardForm.RunList.ItemCaption[0];
RunCheckBox.OnClick := @RunCheckBoxClick;
WizardForm.RunList.Visible := False;
end
end;
end;
我的安装程序有一个带有图像的自定义完成页面。我为此提到了这个 postinstall
标志,那么它会自动启动我的应用程序。但我希望用户能够像复选框一样进行选择。那么有什么方法可以透明化图像顶部的复选框启动消息吗? TNewCheckBox
会帮忙吗?
[Run]
Filename: "app\My program.exe"; Description: "{cm:LaunchProgram}"; #
Flags: nowait postinstall skipifsilent
在标准的 Inno Setup 中,我认为您无法使 WizardForm.RunList
(TNewCheckListBox
) 透明。但是由于简单的 TNewCheckListBox
是透明的,您可以将 WizardForm.RunList
替换为 TNewCheckListBox
。
[Code]
procedure RunCheckBoxClick(Sender: TObject);
begin
WizardForm.RunList.Checked[0] := TNewCheckBox(Sender).Checked;
end;
procedure CurPageChanged(CurPageID: Integer);
var
RunCheckBox: TNewCheckBox;
begin
if CurPageID = wpFinished then
begin
if (not WizardForm.RunList.Visible) or
(WizardForm.RunList.Items.Count < 1) then
begin
Log('No items to run');
end
else
if WizardForm.RunList.Items.Count > 1 then
begin
Log('More than one item to run, keeping the standard non-transparent run list');
end
else
begin
Log('Replacing the one item in the run list with a simple transparent checkbox');
RunCheckBox := TNewCheckBox.Create(WizardForm);
RunCheckBox.Parent := WizardForm.RunList.Parent;
RunCheckBox.Left := WizardForm.RunList.Left + ScaleX(4);
RunCheckBox.Top := WizardForm.RunList.Top + ScaleY(4);
RunCheckBox.Width := WizardForm.RunList.Width;
RunCheckBox.Height := ScaleY(RunCheckBox.Height);
RunCheckBox.Checked := WizardForm.RunList.Checked[0];
RunCheckBox.Caption := WizardForm.RunList.ItemCaption[0];
RunCheckBox.OnClick := @RunCheckBoxClick;
WizardForm.RunList.Visible := False;
end
end;
end;