Dev 实现动态更换皮肤

1.首先介绍一下怎么应用皮肤:

在Form表单上增加控件 “cxStyleRepository”  dev样式仓库控件和"dxSkinController" dev皮肤控制器控件 和"cxComboBox"

。在FormCreate构造方法中增加如下代码:

dxSkinController1.NativeStyle:=false;  

dxSkinController1.SkinName:='DevExpressStyle';  //这里设置当前使用的皮肤名称

如果是D7 的话,用 dxSkinController1.SkinName:='UserSkin' 来代替上面一句,UserSkin 表示使用用户定义皮肤

dxSkinsUserSkinPopulateSkinNames('AllSkins.skinres',cxcomboBox.Properties.Items); //把皮肤资源中存储的皮肤名称加入到下拉列表框中>//把皮肤资源中存储的皮肤名称加入到下拉列表框中.如果是D7 的话,需要引用单元文件dxSkinsDefaultPainters 才能看到这个方法

cxComboBox1.ItemIndex:=0;

 

 

 

 

说明:AllSkins.skinres  这个文件位于Dev安装文件目录下:如 "D:\DevExpress17\ExpressSkins Library\Binary Skin Files"

这个文件的位置要看自己的Dev安装环境的位置,如可以查看Library 下面的Path,如果版本不对,也会造成不能获取到文件的情况

拷贝到程序运行目录下

2.在 cxComboBox的Change事件中增加代码:

dxSkinController1.NativeStyle:=false;

dxSkinController1.SkinName:=cxComboBox1.Text;  

效果如下:

 

注意事项:

function dxSkinsUserSkinPopulateSkinNames(AStream: TStream; AList: TStrings; ADisplayNames: Boolean = False): Boolean;  --参数 AStream  资源文件,例如 AllSkins.skinres, AList 用于保存资源列表,即输出资源文件AllSkins.skinres 中的资源名称列表到目标列表 AList 中,ADisplayNames 是否显示名字,默认为false 该方法功能是加在资源文件中的皮肤样式名称列表到列表中
 
function dxSkinsUserSkinLoadFromFile(const AFileName: string; const ASkinName: string = ''): Boolean;  --AFileName  资源文件名称,ASkinName  资源名称  ,功能是把指定的资源从资源文件加在到内存流中
--这两个方法都定义在dxSkinsDefaultPainters.pas 单元文件中

posted @   丹心石  阅读(485)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示