2012-04-16 76 views
1

我目前使用Alpha lite演示爲我的delphi 7應用程序提供各種外觀。我懷疑如何包含它們的Skin文件(.asz擴展名),以便我可以移植我的Delphi應用程序而不會丟失Look。我知道我必須將它包含在.RES文件中。怎麼做 ?
我做了一個小功能加載資源:如何在Delphi 7的資源文件中使用皮膚文件(.asz)文件

Function LoadResourceFromFile() : Boolean; 
Var 
    hFind , hRes : THandle; 
Begin 
    hFind := FindResource(HInstance,'SkinsVista',RT_RCDATA); 
    If hFind <> 0 Then 
    Begin 
    hRes := LoadResource(HInstance,hFind); 
    If hRes <> 0 Then 
    Begin 
     // what to do now ? 
    End; 
    End; 
End; 

有人能指導我?

回答

8

請嘗試使用以下代碼。這是由我未經測試,但是從供應商的支持基於this post所以我希望它應該是這樣做的正確方法:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    ResStream: TResourceStream; 
const 
    SkinName = 'MySkin'; 
begin 
    ResStream := TResourceStream.Create(HInstance, 'SkinsVista', RT_RCDATA); 
    try 
    sSkinManager1.InternalSkins.Add; 
    sSkinManager1.InternalSkins[sSkinManager1.InternalSkins.Count - 1].Name := SkinName; 
    sSkinManager1.InternalSkins[sSkinManager1.InternalSkins.Count - 1].PackedData.LoadFromStream(ResStream); 
    sSkinManager1.SkinName := SkinName; 
    sSkinManager1.Active := True; 
    finally 
    ResStream.Free; 
    end; 
end; 
+0

這肯定的作品,你可以加少許的解釋嗎? – CyprUS 2012-04-16 11:38:27

+6

我只有和'AlphaControls'一樣的免費版本,並且沒有源代碼和文檔;這個答案基於供應商提供的['這篇文章'](http://www.alphaskins.com/forum/index.php?showtopic=3122)。我在這裏添加的唯一的東西是從資源加載到流,所以我害怕我不能詳細說明這一點:-(也許你可以試着問供應商,但很難說如果他們提供你這樣的細節,當你只有免費的用戶,但也許是的。 – TLama 2012-04-16 11:48:42