DevExpress VCL 动态加载皮肤换肤示例,支持Ribbion

Delphi精简版下载参见:http://blog.csdn.net/maxwoods/article/details/8305861

Delphi XE 3 下载参见:http://blog.csdn.net/maxwoods/article/details/8303039

DevExpress VCL下载参见:http://blog.csdn.net/maxwoods/article/details/8303127

主要实现代码如下:

implementation

{$R *.dfm}

uses dxSkinsDefaultPainters, dxSkinsdxRibbonPainter;

procedure TFormMain.btn1Click(Sender: TObject);

begin

dxrbn1.ColorSchemeName := 'UserSkin';

dxSkinsUserSkinLoadFromFile('.\AllSkins.skinres', cxComboBox1.Text);

dxrbn1.ColorSchemeName := cxComboBox1.Text;

dxrbn1.Update;

end;

procedure TFormMain.FormCreate(Sender: TObject);

begin

Position := TPosition.poScreenCenter;

dxSkinController1.NativeStyle := false;

dxSkinController1.SkinName := 'UserSkin';

dxSkinController1.UseSkins := true;

dxrbn1.SupportNonClientDrawing := false;

dxrbn1.Style := TdxRibbonStyle.rs2010;

dxrbn1.ColorSchemeName := 'UserSkin';

cxComboBox1.Clear;

cxComboBox1.Properties.DropDownListStyle :=

TcxEditDropDownListStyle.lsFixedList;

dxSkinsUserSkinPopulateSkinNames('.\AllSkins.skinres',

cxComboBox1.Properties.Items);

cxComboBox1.ItemIndex := 0;

dxSkinsUserSkinLoadFromFile('.\AllSkins.skinres', cxComboBox1.Text);

end;

end.

在主窗体上放一个dxSkinController即可实现对DevExpress 控件的换肤控制,其关键点在于,SkinName属性要设置为'UserSkin',UseSkins属性为True。对于Ribbion控件,经实际测试,要在换肤前将其ColorSchemeName设置为'UserSkin',加载皮肤后,再将其ColorSchemeName设置为皮肤的名称,否则可能看不到效果。需要注意的是如果使用Ribbioin控件的SuppoerNoneClientDrawing属性为True,进行非客户区绘制(窗体从TdxRibbonForm继承,本例中是从TdxSkinForm继承),显示会不正常。

本例使用了外部皮肤加载,将皮肤资源文件'AllSkins.skinres'进行动态加载,该文件包含DevExpress控件官方自带的所有皮肤,以减小可执行文件大小。dxSkinsUserSkinPopulateSkinNames用于将皮肤资源文件中的所有皮肤枚举到StringList中,dxSkinsUserSkinLoadFromFile用于从皮肤资源文件中加载指定名称的皮肤。

程序运行效果如下:

源代码下载:http://www.ctdisk.com/file/16991803

————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝈蝈(GuoGuo)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值