资源文件有一个vcl skin的一个皮肤,在程序中如何动态调用
资源文件有一个vcl skin的一个皮肤,在程序中怎么动态调用
rc.rc内容:
skin RCDATA "images\VistaXP-VISTAXPB2.skn"
程序中读取代码:
载入皮肤:
------解决方案--------------------
rc.rc内容:
skin RCDATA "images\VistaXP-VISTAXPB2.skn"
程序中读取代码:
function TResData.getStream(const hName: string): TResourceStream;
var
Stream: TResourceStream;
MyJpg: TJpegImage;
resDll: THandle;
begin
resDll := LoadLibrary(PChar(RESDLL_NAME));
try
Stream := TResourceStream.Create(resDll, hName, RT_RCDATA);
Result:=Stream;
finally
FreeLibrary(resDll);
end;
end;
载入皮肤:
SkinData1.LoadFromStream(resData.getStream('skin')); //包地址错误
------解决方案--------------------
//1 制作res文件
//......
//2制作包含res文件的dll
library Mydllp;
uses
ExceptionLog,
SysUtils,
Classes;
{$R abc.res}
begin
end.
//3调用
function TResData.getStream(const hName: string): TResourceStream;
var
Stream: TResourceStream;
MyJpg: TJpegImage;
resDll: THandle;
begin
resDll := LoadLibrary(PChar(RESDLL_NAME)); //RESDLL_NAME为Mydllp.dll文件, 直接res文件加载不了
try
Stream := TResourceStream.Create(resDll, hName, RT_RCDATA);
Result:=Stream;
finally
FreeLibrary(resDll);
end;
end;