2014-02-16 2 views
2

저는 Inno Setup (유니 코드)을 Delphi XE2에서 쓰고있는 DLL 세트와 함께 사용하고 있습니다. DLL에는 설치 마법사/진행 중에 표시되는 VCL 양식이 있습니다.Inno Setup에서 DLL 기반 폼에 VCL 스타일을 적용하는 방법은 무엇입니까?

내 Inno 설치 프로그램에서 implementing VCL Styles을 사용해 보았습니다. 이 DLL 내에 생성 된 양식을 제외하면 모두 잘됩니다. 양식의 일부는

Partial Skin

당신이 볼 수 있듯이

는 폼의 배경색, 목록보기 배경 색상, 글꼴 색상 변경 ... 피부이지만, 모든 그것의. 그러나 목록보기 머리글, 진행률 막대 및 양식의 테두리는 여전히 이전 스타일입니다.

어떻게 이러한 DLL의 적절한 스타일로 양식을 만들 수 있습니까?

+0

: 광각 렌즈 tling); ' –

+0

플러그인은 inno setup으로 생성 된 폼과 컨트롤 만 스킨 할 수 있습니다. 귀하의 dll 형식에 대한 귀하의 의견을 말한대로 VCL 스타일을로드해야합니다. – RRUZ

답변

4

Inno Setup 용 VCL Styles 플러그인은 Inno Setup의 양식과 컨트롤에 스타일을 그릴 목적으로 만 설계되었습니다. 피부로 이러한 DLL의에서 양식을 취득하기 위하여는, 당신은 이노 설치 파일 이름에 전달할 수있는 DLL에서 함수 ...

이노 설정

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

procedure DllLoadStyle(const StyleFilename: WideString); 
    external '[email protected] 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 실제로 내가 예를 들어 ApplyVclStyle`같은 수출 절차 (const를 파일 이름을 사용하여, 그것으로 스타일 파일 이름을 전달하여 각 DLL에이 스타일 파일을로드해야 같은데요

uses 
    Vcl.Themes, 

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

exports 
    DllLoadStyle; 
+0

OT : Inno Setup 상수 (확장해야하는)를 값에 포함하지 않으면 전처리 변수를 확장 할 필요가 없습니다. 전처리 기는 단순히 변수 값을 스크립트에 내 보냅니다. 그래서'ExtractTemporaryFile' 함수 호출에서'ExpandConstant' 함수는 전혀 아무것도하지 않습니다. – TLama

+1

@tlama 포인터를 주셔서 감사합니다. –

관련 문제