最近发现好多网友对DevExpress Skins的使用不太了解,所以近日研究了一下,并写出以下心得:
Q:设计时有风格,运行时没有风格?
A:这种情况主要是因为没有加单元引用,因为在设计时Skins的包已经被注册到了delphi中所以在设计时可以显示皮肤,
但如果没有把单元引用加入到代码中,delphi是不会编译皮肤到你的exe中去的,所以就出现了这种问题.
1.对皮肤的引用,好像从V36开始dev把每套皮肤单独封成了包,所在在程序中我们只要加入所使用皮肤的单元引用就可以了,
例如使用皮肤:Office2007Silver 就要加入引用: dxSkinOffice2007Silver,
以下我列出所有皮肤引用的单元:dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinLiquidSky,
dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMoneyTwins,
dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver,
dxSkinSilver, dxSkinStardust, dxSkinValentine, dxSkinXmas2008Blue, dxSkinBlack,
dxSkinBlue, dxSkinCaramel, dxSkinCoffee, dxSkinGlassOceans, dxSkiniMaginary, dxSkinLilian;
另:如果你的程序是runtime package的话,记得发布时要把相对的bpl加上。
2.对控件皮肤的引用: 以上的皮肤包中只有dev基础控件的皮肤,对于大一点的控件(可选安装的)
还要加入相对控的皮肤包的单元引用, 例如:使用了ribbon的话就要加入dxSkinsdxRibbonPainter;
使用的NavBar就要加入dxSkinsdxNavBar2Painter; 使用的pageContorl就要引用dxSkinscxPCPainter;
对于这类控件可以到dev的源码(skins的source目录中)中去找相印的包。
Q:Navbar怎样设置同风格库的选择一起变化?
A:原来的Navbar有自已的风格,我们只要在它的view styles中选择:
SkinNavigationPaneView 或 SkinExploreBarView 那么Navbar就会根据你设的风格改变风格了,
两者的区别是前者是outlook风格的(像QQ那样),后者是组风格的(像xp的侧边栏)
Q:Ribbon怎样设置同风格库的选择一起变化?
A:这个我想可能是dev的一个bug,它是不根据风格的选择而变化的,
要手动的再设置一下它的ColorSchemeName属性:设置与风格库所选的风格同名就好了。
Q:cxSplitter为什么有时有风格有时没有?
A:这可能又是一个bug,我研究了一下,在窗体上放一个cxSplitter运行时是有风格的,但什么时候没了呢,
是在你右键此控件选splitter editor 后就没了,解决方法是删除窗体上的风格库控件,再重新放上一个,
注意(Ctrl + X Ctrl + V) 是不行的,一定要放个新的。如果其它的控件也有此BUG的话可以参照此解决方法(本人还没发现有其它的)!