在 Inno Setup 中更改任务列表框和其他控件的背景颜色
Changing background color of task list box and other controls in Inno Setup
在 Inno Setup 中,我试图将设置的颜色更改为白色。问题是,当我尝试通过安装程序的 Unicode 版本执行此操作时,在 Select 附加任务屏幕 中,我出现了灰色部分(屏幕截图如下)。重要的是,当我移动到下一个屏幕并再次返回那个屏幕时,那个灰色部分就消失了。
我正在使用以下代码,基于 Inno Setup: How to change background color。
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpWelcome: WizardForm.Color := WizardForm.WelcomePage.Color;
wpFinished: WizardForm.Color := WizardForm.FinishedPage.Color;
wpLicense: WizardForm.InnerPage.Color := clWhite;
wpSelectDir: WizardForm.InnerPage.Color := clWhite;
wpSelectTasks: WizardForm.TasksList.Color := clWhite;
wpReady: WizardForm.ReadyMemo.Color := clWhite
else
WizardForm.Color := clWhite;
end;
end;
当颜色改变时,清单框似乎没有完全重新绘制。
但实际上你的代码太复杂了(实际上甚至不正确)。您可以直接在 InitializeWizard
中设置所有组件的颜色,而不是 CurPageChanged
。这样,列表框在第一次绘制时就有了正确的颜色。
procedure InitializeWizard();
begin
WizardForm.Color := clWhite;
WizardForm.InnerPage.Color := WizardForm.Color;
WizardForm.TasksList.Color := WizardForm.Color;
WizardForm.ReadyMemo.Color := WizardForm.Color;
end;
请注意,Inno Setup 6 具有现代向导风格:
[Setup]
WizardStyle=modern
看起来像这样:
在 Inno Setup 中,我试图将设置的颜色更改为白色。问题是,当我尝试通过安装程序的 Unicode 版本执行此操作时,在 Select 附加任务屏幕 中,我出现了灰色部分(屏幕截图如下)。重要的是,当我移动到下一个屏幕并再次返回那个屏幕时,那个灰色部分就消失了。
我正在使用以下代码,基于 Inno Setup: How to change background color。
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpWelcome: WizardForm.Color := WizardForm.WelcomePage.Color;
wpFinished: WizardForm.Color := WizardForm.FinishedPage.Color;
wpLicense: WizardForm.InnerPage.Color := clWhite;
wpSelectDir: WizardForm.InnerPage.Color := clWhite;
wpSelectTasks: WizardForm.TasksList.Color := clWhite;
wpReady: WizardForm.ReadyMemo.Color := clWhite
else
WizardForm.Color := clWhite;
end;
end;
当颜色改变时,清单框似乎没有完全重新绘制。
但实际上你的代码太复杂了(实际上甚至不正确)。您可以直接在 InitializeWizard
中设置所有组件的颜色,而不是 CurPageChanged
。这样,列表框在第一次绘制时就有了正确的颜色。
procedure InitializeWizard();
begin
WizardForm.Color := clWhite;
WizardForm.InnerPage.Color := WizardForm.Color;
WizardForm.TasksList.Color := WizardForm.Color;
WizardForm.ReadyMemo.Color := WizardForm.Color;
end;
请注意,Inno Setup 6 具有现代向导风格:
[Setup]
WizardStyle=modern
看起来像这样: