XE2 内置了对 VCL 的皮肤支持,皮肤文件扩展名为 vsf。
以下代码加载皮肤文件:
procedure TForm1.GetThemes;
var
dir, FileName, StyleName: string;
begin
Dir := ExtractFilePath(Application.ExeName);
for FileName in TDirectory.GetFiles(Dir, '*.vsf') do
begin
TStyleManager.LoadFromFile(FileName);
end;
CmbSkin.Items.Clear;
for StyleName in TStyleManager.StyleNames do
begin
CmbSkin.Items.Add(StyleName);
end;
end;
一个小小的问题,困扰了我几天。执行 TStyleManager.LoadFromFile(FileName); 这句时,它出现异常,说不能加载该文件。但那些文件肯定是正确的皮肤文件。一开始我还以为是 WIN7 的权限太严格导致程序不能读取文件导致的。
查来查去,上网搜索,都没结果。偶然才发现,除了 uses Vcl.Themes 之外,还必须 uses Vcl.Styles 既然必须要引用 Vcl.Styles,那么当我没有引用它的时候,TStyleManager 这个玩意就不该让我编译通过嘛。
重复一遍:要想用内置皮肤,必须引用2个单元:Vcl.Styles, Vcl.Themes