DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: huoying_you
今日帖子: 4
在线用户: 16
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 ceteric (ceteric) ★☆☆☆☆ -
普通会员
2014/6/12 0:03:29
标题:
我终于觉得Delphi FMX做界面这一块是走错路了 浏览:3924
加入我的收藏
楼主: 想的很美好,但实际无论在性能、功能以及大小上都不如人意。

还是应该走VCL的路线,使用系统自带的UI库。
至少对于移动平台,其实无论安卓还是水果,界面元素大同小异,完全可以抽象出来,底层调用系统的UI库。

最近尝试使用ObjC开发,真正用了水果的UI库,有感而发啊,无论是设计,美观,性能还是易用等,都很不错,Delphi完全不应该另造轮子,费力不讨好。

另外发现,Delphi基础转OC真的比想象中容易,唯一不适应的是做界面这块。感觉不如Delphi环境直观。

建议Delphi的不要太抵触OC,现在有Storyboard和ARC,有Delphi的基础,1周内绝对可以上手了。而且Github上有大量极其优秀的,专为Mobile开发的库可以直接使用,绝对事半功倍啊。
----------------------------------------------
-
作者:
男 ceteric (ceteric) ★☆☆☆☆ -
普通会员
2014/6/12 0:11:48
1楼: 新项目本来是打算用Delphi做的,都做了一个简单的原型,主要是看上了跨平台,还有自己这么多年的经验。但后来遇到一些问题,这才硬着头皮尝试OC,没想到啊,别有洞天。

这才真正意识到Delphi还需要提高的两个方面:
1. UI
2. 生态环境,OC现成的库太多了。

当然,还没有接触安卓的开发。Delphi做一些简单的跨平台应该还是很有优势的。但对于想在App store赚点钱的小开发者,感觉用OC在水果平台上开发效率比目前的Delphi更高。
----------------------------------------------
-
作者:
男 ma9888 (majx) ★☆☆☆☆ -
盒子活跃会员
2014/6/12 8:33:47
2楼: OC是什么?水果是指苹果手机或苹果IPAD吗?
----------------------------------------------
-
作者:
男 aqtata (从一到十) ★☆☆☆☆ -
盒子活跃会员
2014/6/12 8:52:10
3楼: Objective-C

不过你现在入门晚了点吧,还不如直接从swift开始。
----------------------------------------------
-
作者:
男 cuit_xiong (熊猫) ★☆☆☆☆ -
普通会员
2014/6/12 8:53:15
3楼: oc说的是object-c,水果说的是苹果系
----------------------------------------------
-
作者:
男 ying32 (唯有此生) ▲▲▲▲▲ -
普通会员
2014/6/12 8:59:47
4楼: 做移动不知道了,但做win32我早已经不用vcl了。觉得fmx挺好的啊
----------------------------------------------
一个热爱delphi的人,Golang GUI库。 --我的博客--
作者:
男 chscheese (chscheese) ★☆☆☆☆ -
盒子活跃会员
2014/6/12 9:54:39
5楼: FMX上动画和特效的,性能还不如Flash
----------------------------------------------
-
作者:
男 isxuzhu (e.Wong) ★☆☆☆☆ -
盒子活跃会员
2014/6/12 14:26:33
6楼: FMX做的同一程序,在WIN7里开发,WIN7里跑得很正常,拿到XP下界面就变样了,控件大小不一位置不同。。。。
应该是我技术不行吧。。。。
----------------------------------------------
你我,都可以是个造梦者!欢迎加入脚本引擎PaxCompiler交流群303904495http://www.cnblogs.com/fireboxsoft有需要错别字检测软件的朋友可以在我博客上的地址下载使用,备注“2ccc”的朋友可以免费获取超级黄金VVVVVVVVVVIP授权
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2014/6/12 15:36:01
7楼: 双刃剑,FMX虽然没有使用系统自带的UI,但是换肤,特效就非常容易做.
而且用系统自带的UI,很难抽象出跨平台的公共代码
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2014/6/12 17:33:56
8楼: oc那有下载?
----------------------------------------------
-
作者:
男 ceteric (ceteric) ★☆☆☆☆ -
普通会员
2014/6/12 20:11:40
9楼: FMX的的界面库太糟糕了,
我移植了两个windows的程序到OSX,就是用的FMX。

举个简单UI方面的简单例子:
要实现listview的report显示方式,就很麻烦,我先用stringgrid,发现没有多选的功能,尝试自己修改控件源码,加上多选,又发现其他问题,后来转为listbox,自定义了style模拟多列,发现没有header,加上header后又发现无法通过调整header改变各个列的宽度,后来实现了用header来动态调整listbox的style实现宽度调整,又发现当数据很多,翻屏后部分行没有调整,研究后发现是动态加载sytle造成的,于是又研究自动修改原始style以保证后续自动加载的行也能改变宽度。
好不容易改完这些了,勉强可用,流畅和性能这些我都不考虑了。
发现在高DPI的windows下,FMX字体太小了。
我晕,光填这些坑就花了大把时间。

再举个生态环境的Mobile的简单例子:
我现在做iOS开发,网络应用一个很重要的功能是异步加载网络上的图片,而且最好有本地cache功能,方便下次显示的时候重用。在iOS上有一个非常优秀的库,直接调用一条命令给出URL即可,自动实现多线程异步加载,动态占位图片显示,本地cache功能等。如果用delphi,又是一个坑,尤其是本地cache机制,估计又有很多iOS
API需要翻译。

所以我的感慨也是基于自己切实的感受。
如果FMX能够方便调用系统自带的UI,第一个例子就不复存在了。
----------------------------------------------
-
作者:
男 testerhook (CaptainHook) ★☆☆☆☆ -
普通会员
2014/6/12 21:53:57
10楼: 楼主难道用的是XE2?
XE4上,FMX性能已经有了质的飞跃,XE5以后,FMX又进行了优化。
可以这么说,XE2上FMX只能是演示版,XE4上的FMX可以实用了,XE5以后的FMX才开始成熟。
请不要随便下结论,你敢说自己很熟悉FMX了?
我就问一个问题,FMX怎么实现手动拖放的功能?
----------------------------------------------
-
作者:
男 mondaywoo (mondaywoo) ★☆☆☆☆ -
普通会员
2014/6/13 9:08:07
11楼: 学习
----------------------------------------------
-
作者:
男 ceteric (ceteric) ★☆☆☆☆ -
普通会员
2014/6/13 10:11:42
12楼: 我用的XE5
手动拖放什么意思?FMX中做拖放是很容易的,这个我不否认。比VCL简单方便。

但我说的是一些基本的功能,因为使用自己的界面库,非常不完善,而且修改起来很困难。

就比如我举例的列表吧,想要完整模拟类似系统UI自带的功能都很困难。这样的完成度怎么做实际项目的开发?所以我才觉得当初FMX还是应该用系统自带UI库,然后抽象好,至少不会在这些基本的地方留坑。

你们不相信的,我再举个简单例子,Windows下的DPI,现在高清屏很多,你运行一个FMX的程序试试,字体小的可怜,如果直接改大字体,普通屏下又太大。如果用VCL,我可以获取DPI轻松实现自适应。FMX的UI完全是傻逼,还好意思自称高清应用?不要说什么scale layout,完全无法有效控制拉伸比例。

FMX的经验我不敢说很多,但也算玩过,毕竟做了2个跨平台的商业项目了。而且在OSX平台,还自己翻译,引用了好几个MAC下的framework。这些问题,都是真正使用中发现的,不是随便做两个自己用的小程序就能体会到地。

另外,我强调一点,我吐槽的都是界面这部分,其他没问题的。界面这些还都是谈的基本功能,性能呢?体积呢(mobile还是要考虑大小的)?你知道苹果为了优化iOS界面的性能做了多少努力?FMX倒好,一点没用上。自己画,晕,你让水果团队付出这么多的努力才做到的性能优化情何以堪?
----------------------------------------------
-
作者:
男 ceteric (ceteric) ★☆☆☆☆ -
普通会员
2014/6/13 10:38:32
13楼: [quote]Objective-C
不过你现在入门晚了点吧,还不如直接从swift开始。/quote]

Swift现在还不完善,很多功能需要引用OC。再说这东西简单,语法还有点像Delphi,话说回来,我觉得OC也有点像Delphi。
现在起步OC并不晚,这东西很容易学,再说了,我一直认为,语法是很简单的,不同语言换汤不换药,关键还是平台API,库的使用等,不管用swift,OC,JAVA甚至Delphi,都是一样的,难点在这里。
----------------------------------------------
-
作者:
男 ceteric (ceteric) ★☆☆☆☆ -
普通会员
2014/6/13 10:52:59
14楼: 另外,用Delphi做mobile开发的,可以关注一下sourceforge上的Native IOS和Native Android两个项目。看起来还不错,遗憾的是我尝试了一下IOS,但老是出错。以后可以再试试。
我觉得emb至少可以提供类似的功能,给开发者多个选择嘛。
----------------------------------------------
-
作者:
男 zwjchinazwj (蒲石) ★☆☆☆☆ -
普通会员
2014/6/13 11:11:02
15楼: 从FMX诞生的那天开始,我就认为那只是个玩具,现在是,将来也是。
----------------------------------------------
-
作者:
男 hyz_hz (随风) ★☆☆☆☆ -
普通会员
2014/6/13 14:45:30
16楼: 10楼:

我想知道fmx怎么在运行的时候拖动,还有就是用两个手指缩放控件.
----------------------------------------------
-
作者:
男 testerhook (CaptainHook) ★☆☆☆☆ -
普通会员
2014/6/13 22:52:49
17楼: FMX的一个局限。拖放模式改为自动以后,是无法响应鼠标点击事件(比如OnClick)的。
楼主连这个都没发现,显然用FMX还不够全面。
怎么解决我不在这里说,有空会专门开贴子说明的。
楼主的思维还局限在VCL里,请多用用FMX,改变VCL的思维方式。缩放比例都不知道怎么控制,我真不知道该说什么好了。
----------------------------------------------
-
作者:
男 ceteric (ceteric) ★☆☆☆☆ -
普通会员
2014/6/13 23:33:44
18楼: 这个真没注意到,但我用过FMX的listbox,使用了自动拖放,从文件管理器中拖入文件,自动生成缩略图,生成后,是可以正常点击生成的图片的。所以不知道testerhook指的是虾米问题。

关于缩放比例,虚心请教:

最简单的界面,放几个button,text之类,默认编译运行,在96DPI下似乎没问题,但在高清屏(全高清的,必须设成120DPI或以上,否则字太小)下,字体因为没有变化,所以很小,如果程序里自动改字体,控件大小也要调整。请问如何简单解决应用程序在不同DPI下自动缩放而不影响界面按钮等位置和大小的布局?你用你FMX自豪的缩放比例试试?看看是不是垃圾一个。

补充一下:VCL是可以轻松搞定,通过DPI获取缩放比例,按钮等因为是系统自带UI,所以大小会自动适应。你FMX试试?这个简单的问题能把你气晕。如果你以前从来没有考虑过DPI,就只能呵呵了。


另外你能用FMX实现一个完整的VCL下listview的report模式么?就是系统自带的很常见,多列,多行的形式,比如文件管理器界面。要求调整header宽度时对应的列自动调整,这个是很基础的功能吧?你用你FMX的思维方式做做试试?(提示一下,如果只改动态style,一旦翻屏刷新,就有部分行对不齐)我搞了很久,才勉强可用,但还是不如系统自带的,这些如果是用VCL,根本就不是事啊。

这两个问题都很基础,你如果做商业软件,是必须解决的。当然如果只是做几个自己用的小程序,倒不用这么麻烦。
----------------------------------------------
-
作者:
男 vkow (vkow) ★☆☆☆☆ -
普通会员
2014/6/14 2:32:25
19楼: 原生语言跨平台就是个梦想。
Borland走向了这条路,最后放弃了。
没想到,Embarcadero有瞄上了这块。

其实,移动端BS结构、甚至借助于Html5,开发界面并没那么复杂。

如果是移动端独立的App,用这种跨平台的开发,只能说有病才会这样。

真想不明白,Delphi这是要何去何从。
----------------------------------------------
-
作者:
男 pengmg (Challey) ★☆☆☆☆ -
普通会员
2014/6/14 7:27:15
20楼: 用些国外的控件,譬如TMS,能解决一些界面问题,不要自己琢磨
----------------------------------------------
-
作者:
男 pengmg (Challey) ★☆☆☆☆ -
普通会员
2014/6/14 7:29:19
21楼: 做Delphi的,不要对新事物也那么矫情,关键还是多了解,多实践。
----------------------------------------------
-
作者:
男 cfish828 (一天到晚游泳的鱼) ★☆☆☆☆ -
盒子活跃会员
2014/6/14 16:40:41
22楼: @pengmg   请问用TMS的哪个控件来解决界面问题呢? 确实对各种windows和安卓上的分辨率的适应上很头痛
----------------------------------------------
-
作者:
男 tintin1943 (零输好) ★☆☆☆☆ -
盒子活跃会员
2014/7/3 11:50:35
23楼: 分辨率要自己自己控制下,,,FMX每个控件都有矢量放大放小比例,你也可以试试salelayout布局
----------------------------------------------
不喧哗 自有声 心静 思远 志行千里
作者:
男 stanley_xu (Stanley_Xu) ★☆☆☆☆ -
普通会员
2014/7/5 19:19:36
24楼: FMX有自己的定位,我个人感觉比较适合于希望一次开发多平台覆盖的这部分需求群。对这部分人来说,他们只要求快速投放到市场,对于app质量本身的关注度不是放在第一位的。对于想把原生app做到极致的开发者来说,那肯定不如直接用XCode直接写了,但代价也相对大。如果iOS平台做好了,就还需要雇佣人去做Andriod和WP,维护起来成本不低。
----------------------------------------------
-
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2014/7/5 21:27:10
25楼: 想起了一个事情,DELPHI FMX提供的是强大的编译器能力+理论上可扩展框架的能力。楼主的问题类似DBGrid不好用,但是这不是Delphi的任务,这个任务应该交给第三方控件商。Delphi越俎代庖反而不好。你是不是怪错人了?
----------------------------------------------
只有偏执狂才能生存!
作者:
男 zzh2002 (鳄鱼) ★☆☆☆☆ -
普通会员
2014/7/6 6:43:06
26楼: 想想当年的VCL,就觉得该给FMX足够的时间,多几个的版本的进化

顺便说一句,连Windows 8对高分屏的支持都不好
----------------------------------------------
DELPHI编程爱好者
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行97.65625毫秒 RSS