DelphiTeacher

专注控件开发

OrangeUI For FireMonkey介绍

2014/12/25 00:00 于 OrangeUI

OrangeUI是一套跨VCL和FMX框架的皮肤引擎,VCL版支持D7~XE最新版,FMX版鉴于XE2~XE4这些都成了移动开发的过渡版本,不稳定,故仅支持XE5UP2及以上版本,如果以后XE6出来表现更不错的话,那么会仅支持XE6。

OrangeUI,名字取的是本人的英文名Orange,爱吃桔子嘛,DelphiTeacher是我的网名。OrangeUI是从2012年开始设计并开发的,中途遇到很多需要大改的东西,也有很多一时跨不过去的坎,有些功能一时想不出很好的解决方案,本人也倾尽心血,去过五六次医院,积劳成残(菊花残算残吧,牙也废了好几颗,牙疼要命),一时放弃了研发,但是心里还一直惦记着。直到2014年春,趁着新的一年,整理规划好自己,重新启动了OrangeUI的研发。

皮肤控件市面上有很多优秀的,国内像DDUI,最近跳出来的MLSkin,国外的Dev Express,Raize,Bussiness Skin,Alpha Controls等等,无论哪一款都比较厉害,OrangeUI还是菜鸟,不能与他们作比较。OrangeUI的出发点是解决界面控件的复杂变化,并放弃用代码手工绘制界面。

因为OrangeUI是一套代码跨VCL和FMX,所以我写一个新控件都可以在这两个平台下使用,移动平台需要有更友好的交互性,更直观的界面,更简单的操作性,现在Delphi的移动开发刚流行起来,因此我目前主要方向是移动平台的控件开发,让移动平台的开发者不再为界面难以实现而犯愁,一套界面在各个平台表现一致,专注于软件的业务功能处理。等OrangeUI能解决目前市面上大部分手机软件的界面,再将一部分精力投入于Windows平台。

今年,本人DelphiTeacher的目标是实现OrangeUI的全力发展,让很多的人能使用OrangeUI来轻松开发美观大方的界面,OrangeUI也一定会突破更种困难,坚强的发展下去。

预计OrangeUI会一个月发一个版本,每个版本都会有新的控件,使用教程及控件的示例代码加入进去,并会带本人制作的几个简单的小软件进去,给大家提供更系统,更全面的学习途径。

有兴趣了解OrangeUI的,或是一起探讨皮肤界面的,欢迎加入OrangeUI For FMX 技术支持QQ群10900297

OrangeUI For FireMonkey 1.0 Preview XE5UP2发布了

2014/01/03 00:00 于 OrangeUI

OrangeUI For FireMonkey 1.0 Preview XE5UP2发布了,

下载地址(百度网盘):http://pan.baidu.com/s/1c0eRaF2

附带有控件安装教程,使用说明,及示例.

本人先发布了这个For FMX的预览版,因为后面还要加一些东西进去,还会整理出VCL版本,

想想开发这个东西,真是一把鼻涕一把泪,大便还流血!!!!但这还竟然只是个开始,哈哈,后面的路还很长。

OrangeUI是一套跨VCL和FMX框架的皮肤引擎,VCL版支持D7~XE最新版,FMX版鉴于XE2~XE4这些都成了移动开发的过渡版本,
不甚稳定,故仅支持XE5UP2及以上版本,如果以后XE6出来表现更不错的话,那么会仅支持XE6。

皮肤控件市面上已经有很多优秀的,我也还只是个菜鸟,今天算是走出第一步,后面还要经历不断的完善和考验。

希望大家多多批评和指正!

有兴趣了解OrangeUI的,或是一起探讨皮肤界面的,欢迎加入OrangeUI For FMX 技术支持QQ群10900297

希望OrangeUI有个好的开始

2012/12/04 00:00 于 OrangeUI

有兴趣了解OrangeUI的,或是一起探讨皮肤界面的,欢迎加入OrangeUI For FMX 技术支持QQ群10900297,

从事Delphi的控件开发已经五个年头了,做过不少套皮肤,开发过无数的控件,
但是,三年来,几乎都在做重复的工作,那里文本绘制的坐标改一下,这里加一个图片,从基类控件中派生修修补补的,
而且,控件的设置几乎是运行时的,也就是只能靠代码来设置皮肤控件的属性,对自己来说勉强可以将就一下,
可是,若要给别人用,别人肯定会觉得很难用。
着实花功夫,感觉不能再这么下去的。

从2012年年初的时候就在设计一套皮肤控件了,
一开始的时候,野心勃勃的,想着这也要实现,那么要实现,到最后,七月份的时候,发现能力有限,几万行代码白写了,
从中明白凡做大事,由易到难,由简到繁的过程。

这次的皮肤控件设计我认为是比较完美的,
主要是将控件和绘制行为逻辑独立开来了,
一般像我开发控件的模式,比如有两种不同风格的按钮,
我会先开发一个比如TCustomButton,然后再继承出两种控件,
TStyleAButton和TStyleBButon,
但是现在,我的设计思路是只开发一个TSkinButton,
然后这个TSkinButton拥有一个SkinStyle类,
SkinStyle类封装按钮绘制和行为的逻辑,
然后写一个StyleA和一个StyleB,
我想放一个StyleA的Button在窗体上时,
我选一个TSkinButton按钮在窗体上,将它的SkinStyle设置为StyleA即可,
避免了控件面板上按钮控件过多过于眼花

有一点一直在思考,
一个皮肤控件包的生命在哪里?
像RZ,DEV,BS和AS,这些出名的,
这些控件包,都有多款皮肤,很多功能强大又好看的控件,
这些不禁令我感叹,
我一个人的力量,究竟能不能开发出这么庞大的控件包,
毕竟人力有限,能力有限

为了给OrangeUI增加皮肤包解决方案,
又进行了大改,花费了一个多星期对它大动手脚,到现在也还只完成了一半,
皮肤包解决方案其实就是将所有的素材放在一个皮肤包文件中,
比如有两个一模一样的窗体,它们使用同一幅图片做为背景,
一般情况下,我们会给这两个窗体分别加载这幅图片,
这样,增加了内存使用量,如果这种情况严重的话,会使用运行时的内存臃肿不堪,
也为了在设计时能看到使用皮肤包后的效果,还需要很大的工作量。

由于将绘制引擎分离出来了,所以,可以支持GDI, GDI+等其他的方式,
需要一些时间来完善,将这些绘制文字,图片等功能封装起来

皮肤包设计器也还没有弄好,唉,一大堆东东,没有几个月是搞不定的。

由于DirectUI控件有先天的优势,就是拉动窗体的时候不会闪烁,还可以背景透明,
所以如何将普通的控件和DirectUI的控件共用同一个绘制方法,同一个控件行为逻辑,
还是蛮头疼的,再想想,基本的DirectUI控件对于一些要求比较高的软件还是需要的。

预计OrangeUI初步完成要在13年的6,7月份了,
不管怎样,凡大事做于细,难事做于易,
求个尽善尽美吧

今天是星期六,抓了一天的虫子,这个虫子太难抓了,虽然最后发现只是小小一句代码,
但是它的破坏力还真是惊人啊。。。

今天又是个大改的日子,想好如何将属性分离出来的方法了,便于多种类型的控件共用相同的代码,
Delphi没有多重继承真是累啊,做起来,虽然有接口,但是总不致于每类控件都实现吧,那虽然是复制粘贴,但代码冗余太大了,
将很多东西都脱离出来有一个弊端,就是对用户不友好,
比如原先很简单的TCheckBox.Checked属性,
如果我将它封装进TCheckBoxProperties类,供DirectUI控件和普通的Win控件共同的话,
那么使用起来就会是SkinCheckBox.Properties.Checked,这么长,不是很方便,
因此,还是需要提供给用户一个方便的接口

最近遇到好些需要重改框架的问题,每次大改,伤筋动骨,几乎是推倒重来,
地基很重要,如果在造房子的时候发现地基有问题,那不是要爆破啦,
所以,不要慌,趁现在东西还少,赶紧处理,相信以后会有好处的。

还有,我得了痔疮,眼情还发炎了,五六点钟起床就写代码,不停的揉眼睛。
上厕所都搬台电脑敲代码。

这些天,OrangeUI卡在一个地方过不去,网上也没有这方面的资料,
我只能不断的思考,期待某一天能够灵光一闪,弄出一个完美的解决方案。
Orange的基础还需要不断的纠正和完善,我也会加快脚步,
尽快的推出,接受大家的指教,并不断的发展和完善

今年是2014年,又重新整理了一下自己,2013年是休息的一年,养了点精神,继续接着OrangeUI,
今年,看着前两年的OrangeUi的代码,一开始有些看不懂了,后来慢慢的熟悉,
发现这个框架还是蛮好的,只是有几个控件的实现方式需要大的改动,
以前想不到很好的解决方法,今年想出了解决办法,
希望今年OrangeUI能被大多数人使用,
鉴于移动平台的开发热情,先推FMX版的OrangeUI

欢迎加入OrangeUI For FMX 技术支持QQ群10900297