首页
社区
课程
招聘
VCLSkin新皮肤不能使用的问题
发表于: 2008-7-24 15:28 13778

VCLSkin新皮肤不能使用的问题

2008-7-24 15:28
13778
到 http://www.link-rank.com/download.htm 下载了官方最新的皮肤文件

Skins Package A Free 3.8M 7/11/2008 70 Skin Files. 
Skins Package B  Free 2.3M 7/11/2008 47 skins from Visual Style. 

用最新版本VCLSkin 5.2 加载这些皮肤会出现皮肤文件过旧的提示,应用皮肤失效。

尝试用旧版本的VCLSkin加载这些皮肤也会出现这个错误。尝试过的版本有4.11 ,  2.6 , 3.81

用皮肤编辑工具可以打开这些皮肤,保存后再加载也会提示版本旧  

很漂亮的新皮肤,可是。。。。。。

哪位大大帮忙测试下这么才可以用这些皮肤 

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 190
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
把原来的皮肤控件删去,重新加载到界面就可
2008-7-24 19:05
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我开始用4.11版本的加载这些皮肤,失败,提示皮肤久。想到新版本应该向下支持,在官方网站下了最新的VCLSkin 5.2控件.删除已安装的的VCLSkin4.11控件,安装VCLSkin 5.2控件,新建一个项目,放一个SkinData, 在SkinStore选择皮肤文件,然后设置为激活。运行,提示一样,皮肤久。

后来用VCLSkin 5.2控件带的Demo.exe加载这些皮肤,一样无效 后来分别用其他本本的Demo.exe加载这些皮肤,还是出现这个问题

无意中发现两个名称相同的VistaXP-VISTAXPB2.skn (从Skins Package B  包里解出来的),另一个是 VCLSKIN.v4.11带的皮肤。名称一样,预览图一样,VCLSKIN.v4.11带的可以正常加载。但Skins Package B  包里解出来的就不行

有文件大小区别:
VistaXP-VISTAXPB2.skn     62KB      
from:   http://www.link-rank.com/download/skins3.zip

VistaXP-VISTAXPB2.skn     60KB  (VCLSKIN.v4.11带的皮肤)

用vclskinbuilder    (http://www.link-rank.com/builder.zip)均可打开编辑
上传的附件:
2008-7-25 03:33
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好象不是控件问题。。而是皮肤问题。。。。就是说皮肤不是通用的。有针对性
2008-10-26 14:06
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
记得DEMO版本标题会带有DEMO字样。怎么我下了个5。03的却没带DEMO?
2008-10-26 15:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
以下为我自己研究得出的。下面连接为原帖

http://topic.csdn.net/u/20090604/13/9981ac5f-1447-4b65-898c-5765c6c6f602.html

vclskin This is Older Skin File'#13'Please update to new version ! 一点发现

找到了 5.03 与5.20的源码
This is Older Skin File'#13'Please update to new version !
这句发现在
SkinRead.pas里

每读一个SKN file
就要判断一次skn的版本
大概如下:
      Delphi(Pascal) codeif header.version=20000 then  begin
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader);
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;
不在版本列表里的

showmessage('This is Older Skin File'#13'Please update to new version !');

从网上找了不少文章 都说是skin控件的版本与SKN的版本不一致。具体的原因无果。

在无意中,找到5.03版本的skin控件,很多SKN文件不在提示版本错误了。
翻开SkinRead.pas 发现 版本控制里多了
Delphi(Pascal) codeif header.version=70000 then begin
       setlength(s,$100);
       r.Read(s[1],$45);
       setlength(s,header.dirlen);
       r.read(s[1],header.dirlen);
       dir.text:=lowercase(s);
       Num:=dir.count;
       r.read(sizes[0],num*sizeof(integer));
       i:=(num)*sizeof(integer)+header.dirlen+sizeof(Tskinheader)+$45;
       ms.Seek(0,soFromBeginning);
       ms.write(Pointer(Longint(r.Memory)+i)^,r.size-i);
       b:=true;

70000版本的控制

在对比一下5.20的SkinRead.pas 果然,5.20版本没有70000版本的判断。
而4.94版只到50000版

用SkinRead.pas做了个SKN文件版本的判断工具
看看不能读的SKN文件到底是多少版的。
结果为70000





===================看看关于skinBuilder=====================
官方 标注是5.0的  下载出来是7.0的
那好用这个7.0的builder 做个skn看看是多少版
结果为70000

2.5的builder 是20000
6.0的builder 是50000


2009-10-24 20:33
0
游客
登录 | 注册 方可回帖
返回
//