如何在Delphi 7中的资源文件中使用Skin文件(.asz)文件

时间:2012-04-16 11:14:21

标签: delphi

我目前正在使用Alpha lite演示来为我的delphi 7应用程序提供各种外观。我对如何包含他们的Skin文件(.asz扩展名)有疑问,以便我可以在不丢失Look的情况下移植我的Delphi应用程序。我知道我必须将它包含在.RES文件中。怎么做?
我已经做了一个小函数来加载资源:

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;

有人可以指导我吗?

1 个答案:

答案 0 :(得分: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;