2

Delphi XE2 で作成している一連の DLL で Inno Setup (Unicode) を使用しています。DLL には、インストール ウィザード/進行中に表示される VCL フォームがあります。

Inno Setup インストーラーでVCL スタイルを実装してみました。これらの DLL 内で作成されたフォームを除いて、すべて問題ありません。フォームの一部はスキンされていますが、すべてではありません...

部分的な皮膚

ご覧のとおり、フォームの背景色、リスト ビューの背景色、およびフォントの色が変更されています。ただし、リスト ビューのヘッダー、進行状況バー、およびフォームの境界線はまだ古いスタイルです。

これらの DLL のフォームに適切なスタイルを表示するにはどうすればよいですか?

4

1 に答える 1

4

Inno Setup の VCL Styles プラグインは、Inno Setup のフォームとコントロールにスタイルを描画するためだけに設計されています。これらの DLL のフォームをスキン化するには、Inno Setup がファイル名で渡すことができる DLL から関数をエクスポートする必要があります...

イノセットアップ

[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 に答える