2

我正在使用 Inno Setup (Unicode) 和一组我在 Delphi XE2 中编写的 DLL。DLL 具有在安装向导/进度期间显示的 VCL 形式。

我已经尝试在我的 Inno Setup 安装程序中实现 VCL 样式。一切都很好,除了在这些 DLL 中创建的表单。有些表格是蒙皮的,但不是全部...

局部皮肤

如您所见,表单的背景颜色、列表视图背景颜色和字体颜色都发生了变化。但是,列表视图标题、进度条和表单边框仍然是旧样式。

如何使这些 DLL 中的表单显示正确的样式?

4

1 回答 1

4

Inno Setup 的 VCL Styles 插件仅用于在 Inno Setup 中的窗体和控件上绘制样式。为了让这些 DLL 中的表单被皮肤,你需要从 DLL 中导出一个函数,Inno Setup 可以在文件名中传递......

创新设置

[Code]
#define public VclStyleFile "Carbon (2).vsf"

procedure DllLoadStyle(const StyleFilename: WideString);
  external 'DllLoadStyle@MyDLL.dll stdcall';

function InitializeSetup: Boolean;
begin
  ExtractTemporaryFile('{#VclStyleFile}');
  LoadVCLStyleW(ExpandConstant('{tmp}\{#VclStyleFile}'));
  DllInit; //Presumed your DLL needs to initialize / instantiate the form
  DllLoadStyle(ExpandConstant('{tmp}\{#VclStyleFile}'));
  ...
end;

德尔福DLL

uses
  Vcl.Themes,

procedure DllLoadStyle(const StyleFilename: WideString); stdcall;
begin
  TStyleManager.SetStyle(TStyleManager.LoadFromFile(StyleFilename))
end;

exports
  DllLoadStyle;
于 2014-02-16T20:14:02.400 回答