在Inno Setup的自定义页面上显示控件背后的背景

时间:2018-09-17 18:48:13

标签: inno-setup pascalscript

我已经创建了一个安装程序,并且试图设置背景图像。但是背景没有显示在安装页面上的文本和进度条控件的后面,这是它的外观:

InstallTypePage InstallingPage

这是我用来设置背景的代码:

ExtractTemporaryFile('white.bmp');

InstallTypePage := CreateInputOptionPage(wpSelectDir,
  '', '',
  'Si eliges la instalación de tipo "Servidor" se creará una base de datos en blanco.',
  True, False);
{add white background}
BackImageW := TBitmapImage.Create(WizardForm);
BackImageW.Bitmap.LoadFromFile(ExpandConstant('{tmp}\white.bmp'));
BackImageW.Top := 0;
BackImageW.Left := 0; 
BackImageW.Parent := InstallTypePage.Surface;
BackImageW.Align := alCLient; 
BackImageW.Stretch := False;

{create radio buttons on page}
InstallTypePageID := InstallTypePage.ID;
InstallTypePage.Add('Servidor');
InstallTypePage.Add('Terminal');
InstallTypePage.Add('Restablecer');

BackImageW := TBitmapImage.Create(WizardForm);
BackImageW.Bitmap.LoadFromFile(ExpandConstant('{tmp}\white.bmp'));
BackImageW.Top := 0;
BackImageW.Left := 0;
BackImageW.Parent := WizardForm.InstallingPage;
BackImageW.Align := alCLient;
BackImageW.Stretch := False;
WizardForm.ProgressGauge.Top := WizardForm.InstallingPage.Height - ScaleY(40);
WizardForm.ProgressGauge.Height := ScaleY(8);

1 个答案:

答案 0 :(得分:2)

TNewStaticText不支持透明度。您可以通过将其替换为TLabel来解决此问题。参见Inno Setup - Transparency under text in page name and description labels

但是您的问题不仅是TNewStaticText,而且还有TNewCheckListBox和其他控件。 TNewCheckListBox完全不支持透明性。请参见Transparent components list background in Inno Setup?,您所要做的就是将其背景设置为白色。而且,如果您决定仍然依靠这种方法,则可以使用TNewStaticText和所有其他控件进行相同的操作。

InstallTypePage.SubCaptionLabel.Color := clWhite;
InstallTypePage.CheckListBox.Color := clWhite;

enter image description here


但是您不能更改TNewProgressBar的颜色。您将必须绘制一个自定义进度栏。参见How do I change the color of my progress bar in Inno Setup?


有支持主题的Inno Setup克隆。这些可能支持这些控件的透明性。