2012-04-16 81 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