Delphi著名皮肤控件库横向对比。

10月25日更新了最新测试的结果,在文章中用红色字体标注出来了。

皮肤这东西很多人褒贬不一,有人认为程序做的好就行了,界面还是保持原生态来的稳定。的确,稳定是程序至关重要的一点,离开这点其他任何都无从谈起,但不可否认,无论是微软、苹果,还是大众用户,审美观越来越高,试想同样的QQ软件或者酷狗软件,功能稳定性相同,你是喜欢带皮肤漂亮的还是喜欢原生态的呢?因此,程序界面美化也是一个产品非常重要的一点。

做皮肤其实是项浩大的工程,从美工设计、到贴图、到程序设计,都非常的麻烦,如果不是一个非常成熟的产品且有很大的用户群体,并且公司具有相当实力,一般都不会去自己做皮肤,毕竟涉及的东西太多,一旦出现问题,那将对软件本身带来无法预计的后果。

因此我选择使用成品皮肤库在现有的软件上,在使用前为了在效果和稳定性上达到平衡,因此对目前DELPHI市场上的皮肤控件都进行了一一测试,包括稳定性测试、内存泄漏测试、贴图效果测试、使用效率、皮肤界面五大项进行了一个横向的对比,以便给正在准备使用皮肤的朋友一些参考。

这次选择的产品都是“著名”控件包,为什么加上“著名”二字,这个是有道理的,皮肤这东西用上后直接影响到程序的运行,后续维护一定要有保障,试想你用了一个皮肤控件,没有后续的保障,遇到BUG没人修正,你又没有源代码的情况下,除了换皮肤控件外没有任何办法。因此著名的DELPHI控件的标准是,有正规公司或个人运作,保持持续更新,遇到问题反馈后能得到响应的控件包。

这次参与测试的控件包包含了:AlphaControls/BusinessSkinForm/DynamicSkinForm/VCLSkin/AppFace 五个,我也测试过网上能找到的一些其他控件,但其长期不更新因此直接淘汰。在控件包方面,国外的产品比国内的强的太多,拿一款QQ界面控件包来说(这里不直接指明),控件BUG成堆,甚至连最起码的界面重绘、刷新和内存泄漏都没做好,这样的产品尽然也拿出来卖钱,而发现没人购买后,作者以免费名义发布控件,但不包含源代码后,近一年多都没更新过一次,你发现BUG提交给他,他就让你买源代码,价格2000-5000不等,这样的控件包建议大家连用都不需要用,直接PASS,以免做很多徒劳的事。

这几个控件包除了AppFace外都提供的DEMO程序,除了AppFace外都是以Delphi组件形式提供的,而AppFace是DLL方式提供。

使用便利性 稳定性 内存泄漏测试 贴图效果测试 使用效率 皮肤界面

AlphaControls 便利 一般 有泄漏 很好 高 精致

BusinessSkinForm 便利 好 无泄漏 一般 高 一般

DynamicSkinForm 便利 好 无泄漏 一般 高 一般

VCLSkin 便利 一般 有泄漏 一般 一般 一般

AppFace 便利 差 无泄漏 一般 高 一般

上表上概括了几个界面控件包的特点,下面详细介绍下这几个界面包测试时候遇到的问题。

最早测试的是AlphaControls,版本是最新的7.54 LITE EDITTION,源码版本是 7.34,说实在的,从界面效果来说,AlphaControls无疑是这几个界面包里面最好的,也是最精致的,同样提供了超过60种皮肤,而且在不断增加,贴图效果也是最好的。测试过程发现内存有轻微泄漏,主要集中在几个控件上,这个问题不大。但窗口标题后面经常出现一些像乱码的字符,这个让人很不舒服,原本以为是7.34版本的问题,结果更新到官方最新的7.54免费版后,还是有这个问题。但这些都可以忽略,最为重大的BUG是界面最小化后,恢复时经常会导致死机,注意是死机,并不是应用程序无响应,这时候除了按硬启动外没有任何办法。我原本以为是机器的问题,更换机器换使用官方DEMO,依然发现这个严重的问题。但该问题并不是每次都会出现,基本出现率在1/20样子。但这个问题不可谓不严重,导致死机是什么概念,真是让人无语。因此AlphaControls也是第一个被淘汰,且最不舍的控件包,希望以后的新版本可以解决这个问题。(看官方更新历史记录,曾经更新过这个问题,但似乎没有彻底修正)

始终对AlphaControls的界面记忆犹新,因为皮肤控件中很少有这么精致的,因此对死机的问题又进行了详细测试(10月25日),经过最新的测试发现,导致死机是因为窗口动画效果的原因,因此将窗口HIDE、最小化、显示三个动画效果关闭后,死机情况就消失了。

第二个测试的是AppFace,这是个轻量级的皮肤控件,使用来说相当简单,加载个DLL即可,可以说不用对程序进行任何调整。提供的界面包比较少,皮肤也不怎么精致。但内存泄漏控制的很好。在测试过程,先用了一个简单的小软件加载做测试,没有什么问题,然后拿出我以前写的一个类似记事本的程序,这时候发现,加载AppFace后,软件尽然启动报错,为了确认是否是软件问题,我特意拿了一款开源程序(做脚本编辑的),结果发现一样的情况发生了。无奈只好PASS。

第三个测试的是BusinessSkinForm和DynamicSkinForm,这两个控件包可以说是孪生兄弟,因为是由一家公司开发的,DynamicSkinForm比BusinessSkinForm少了数据感知控件,不做数据库程序,没什么区别,界面皮肤包也是通用的,而且多达170多种。但说实话,精致度还不够好。我们发现它还提供了很多新颖的界面设计组件,可以设计出非常具有特色的界面。在测试中均使用厂家提供的标准DEMO,内存无泄漏情况,这点难能可贵,毕竟是这么大型的控件包。贴图效果也算过得去,但和AlphaControls比还是稍显逊色,有不小的差距。虽然提供的界面皮肤包多达170多种,但精致的还是有限,因此可以选择性的找一些皮肤发布。使用效率来说,如果窗口不使用动画效果,显示速度会比较快,但界面切换有闪烁情况。如果使用动画效果,使用效率就低了很多了,给人一种漫不经心的感觉。这两个控件在测试的两天中,发现稳定性很好,没有发送死机、无响应和自动退出这些情况。但发现窗口标题对中文支持不是很好,有中文时会显示不全,你可以自己将标题中的中文字符数计算出来,然后在标题后加这么多空格即可显示完整标题。

最后测试的是老牌VCLSkin,这套控件包使用非常方便,提供的皮肤包也多,内存泄漏控制的也不错,使用效率很高,界面虽谈不上精致,不过也还说的过去。稳定性也还不错,比起早几年使用的时候,稳定性要提高很多,但在测试过程中还是发生了两次异常报错的问题。因此看来稳定性还有提高的空间。

通过测试后,我选择了BusinessSkinForm这套控件包,虽然效率不是最高,界面不是最精致,但贵在稳定。截至文章发布前,这组控件包仍然在跑测试,没发生任何意外。

截至10月25日修改程序使用BusinessSkinForm已经过半工程,但怎么看界面都不那么舒服,虽然多达170多套皮肤,但精致的效果好的真没几个。由于发现AlphaControls的BUG所在,并且无影响,最终决定放弃BusinessSkinForm使用AlphaControls,AlphaControls无论界面精细度、细节都很漂亮。

Delphi,Delphi皮肤控件,皮肤控件对比,皮肤控件测试,皮肤包,AlphaControls,BusinessSkinForm,DynamicSkinForm,VCLSkin,AppFace

Delphi著名皮肤控件库横向对比。(AlphaControls/BusinessSkinForm/DynamicSkinForm/VCLSkin/AppFace)