私はInno Setup(Unicode)をDelphi XE2で書いているDLLのセットと一緒に使用しています。DLLには、インストールウィザード/進捗中に表示されるVCLフォームがあります。
私は試しました VCLスタイルの実装 私のInno Setupインストーラで。これらのDLL内で作成されたフォームを除いて、すべてがうまくいきます。フォームの一部はスキンですが、すべてではありません。
あなたが見ることができるように、フォームの背景色、リストビューの背景色、およびフォントの色が変更されました。ただし、リストビューのヘッダー、進行状況バー、およびフォームの境界線は、依然として古いスタイルです。
これらのDLLのフォームを適切なスタイルで表示するにはどうしたらいいですか?
回答:
回答№1は4Inno 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;
Delphi DLL
uses
Vcl.Themes,
procedure DllLoadStyle(const StyleFilename: WideString); stdcall;
begin
TStyleManager.SetStyle(TStyleManager.LoadFromFile(StyleFilename))
end;
exports
DllLoadStyle;