分享

盒子论坛 v2.1

 quasiceo 2014-02-10
作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-7 18:09:17
标题:
delphi xe5 ios的硬伤:ComboBox的Item超过千行就启动不了 浏览:677
加入我的收藏
楼主: delphi xe5 ios的硬伤:ComboBox的Item超过千行就启动不了

在虚拟机上完美运行, 到了真机, 特别是iphone,卡在登陆界面。

试过动态生成:
     for I := 0 to 3000 do
     begin
          s := ary[i];
          ComboBox1.Items.Add(s);
     end;
结果也是卡在界面动弹不得。。。。。。

求大侠出手:
动态生成ComboBox1.Item, 每次Clear清空ComboBox1.Item后动态添加上几行, 配合手势的刷动进行, 这样, 也许就不会卡了。
但俺发现很难的,因为ComboBox只有选定后才有个OnChange响应,在手刷的时候,根本没啥事件响应。

或者,有什么好的控件介绍?

拜谢!
----------------------------------------------
-

作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-7 18:10:13
1楼: 动态300行都要等很久。 吐血~~~
----------------------------------------------
-
作者:
男 epzybook (epzybook) ▲▲▲△△ -
注册会员
2014-2-7 19:10:49
2楼: 3000行,就是在手机上面,翻来翻去也要花不少时间吧?

想想其他办法吧。
----------------------------------------------
-
作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-7 19:17:44
3楼: epzybook您好! 请问您真的试过3000行都行吗? 

办法是有的, 但是添加几个按钮和Label, 不用ComboBox, 就失去了IOS的风格, 这样的收费软件卖出去, 客户用起来体验一定很奇怪。
----------------------------------------------
-
作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-7 19:20:04
4楼: 刷起ComboBox来, 有那种“哒哒哒”的美感, 要顾及用户的习惯吧。
----------------------------------------------
-
作者:
男 szlbz (szlbz) ▲▲▲▲△ -
盒子活跃会员
2014-2-7 19:45:56
5楼: 从300行中选择?这体验绝对不好
----------------------------------------------
-
作者:
男 internetzs (internetzs) ▲▲▲▲△ -
盒子活跃会员
2014-2-7 20:46:19
6楼: 不要用跨平台的fmx, iphone体验易博龙肯定做不好
建议用D.P.F Delphi iOS Native Components
http:///projects/dpfdelphiios/?source=navbar
----------------------------------------------
-
作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-7 20:49:17
6楼: 谢谢szlbz!谢谢epzybook!300行体验确实不好,3000行更不行。俺想到一个折衷办法了,谢谢您们给予俺解决问题的灵感!
----------------------------------------------
-
作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-7 20:53:51
7楼: 谢谢internetzs!下午装了dpf,但是不成功,控件装好了都是灰色没激活的,不知道问题出在哪,只好明天再继续了。
----------------------------------------------
-
作者:
男 fff2001 (汤圆) ▲▲▲▲△ -
盒子活跃会员
2014-2-7 21:07:26
8楼: 用最新版本的  安装还可以。 看好英文的安装说明。
----------------------------------------------
-
作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-7 21:11:13
9楼: 谢谢ff2001!
----------------------------------------------
-
作者:
男 tintin1943 (零输好) ▲▲▲▲△ -
盒子活跃会员
2014-2-7 22:10:56
10楼: 所有的 TStrings UI控件,在插入数据时候
最好禁止刷新

 ComboBox1.items.beginupdate;

  .....

   ComboBox1.items,endupdate;

速度快很多
----------------------------------------------
一场轰轰烈烈的现代土改革命,不亚于英国的圈地运动,把我朝GDP推向全球第二,成为中央和地方财政的盛宴! 得于斯者,毁于斯! http://hi.baidu.com/tintinsoft
作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-8 5:28:59
11楼:   零输好 前辈!谢谢指点!两句代码解决困扰俺 2 天的问题!您太帅了!大清早起来,要祝您以及所有指点俺的大侠新年发大财喔!
----------------------------------------------
-
作者:
男 doremi (天籁之音) ▲△△△△ -
注册会员
2014-2-8 8:28:44
12楼: 嘿嘿 硬伤
----------------------------------------------
-
作者:
男 kingofsun (小矮人酋长) ▲▲▲▲△ -
普通会员
2014-2-8 9:21:55
13楼: 多和谐的帖子,顶起
----------------------------------------------
-
作者:
男 delphixxx (delphixxx) ▲▲▲▲△ -
盒子活跃会员
2014-2-8 10:14:39
14楼: 移动开发与桌面开发是不一样的。上次发布会上听李维讲,一般只推荐取少量的数据。
----------------------------------------------
After three days without programming, life becomes meaningless.
作者:
男 zhuzh_yuy (华) ▲▲▲▲△ -
普通会员
2014-2-8 10:45:53
15楼: 估计楼主是为了测试FM的极限性能,感谢楼主的评测!按此在新窗口浏览图片
----------------------------------------------
-
作者:
男 tintin1943 (零输好) ▲▲▲▲△ -
盒子活跃会员
2014-2-8 14:43:46
16楼: 5:28起床看贴写代码,,佩服了你这个妹纸!
----------------------------------------------
一场轰轰烈烈的现代土改革命,不亚于英国的圈地运动,把我朝GDP推向全球第二,成为中央和地方财政的盛宴! 得于斯者,毁于斯! http://hi.baidu.com/tintinsoft
作者:
男 locet (locet) ▲△△△△ -
注册会员
2014-2-8 20:46:53
17楼: 1000多条记录,用combobo来显示,本身是不是有问题了
----------------------------------------------
-
作者:
男 chinasg (阿牛) ▲▲▲△△ -
普通会员
2014-2-8 22:13:06
18楼: 硬伤..........

Excel每个Sheet最多只能65535行,我不知道是不是应该投诉微软,为什么有65535行的“硬伤”。
----------------------------------------------
-
作者:
男 lynu (lynu) ▲▲▲▲△ -
盒子活跃会员
2014-2-9 13:00:07
19楼: 别说combobox了,就算是数据集,3000行记录一次拉回都是不合理的设计!combobox作为下拉选择,8-16行是上限了,超过应改以list显示,list也不要超过30行.要考虑用户的使用体验.
----------------------------------------------
-
作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-10 3:04:21
20楼: 谢谢各位大侠指点。
俺发现,问题其实蛮有探讨和学习之处,俺从百度搜索到一篇文章,刚好是本站武稀松大侠写的:

从DelphiXE4的例子分析FireMonkey ListBox效率问题.
http://www./?p=313

尝试着在主Form单元加入GlobalUseDirect2D := False;关闭D2D,那么FMX在渲染界面的时候启用的就是GDIPlus.
循环10000次的时间由10秒缩减到3秒.
罪魁祸首在于D2D的API速度.

......

再尝试编译,发现代码10000次循环代码时间已经变为1秒了.

......


再看结果,10000次循环变为800毫秒.虽然还是有点慢.但是毕竟可以勉强接受了.

总结:
1.D2D的BitMap的map处理上,比GDIPlus慢很多有,10秒减到3秒,(这个也可能是我显卡不行吧,没有在其他计算机上试过).D2D正常应该是把图都放到显存中,然后处理.
FireMonkey的ListBox这种场景下有多个自定义的图,每次都要创建D2D对象,把用户图片从内存传到显存.所以D2D不太适合这种场景.
2.这个是FireMonkey框架的设计问题.TControl.RefreshInheritedCursorForChildren被调用的次数太多.没判断BeginUpdate不需要刷新的情况
3.和Demo的代码有关,和FireMonkey的实现都有关,IndexOf不该这样频繁的调用.或者说ListItem的GetIndex方法不应该依赖IndexOf.否则数量非常多的时候频繁调用效率有问题.
4.ListBox设计的问题.导致添加大量Items的时候必然慢.因为每个Item都要事先Create,比如有一百万Item就要事先创建一百万次.其实这里可以设计一种模仿Windows的ListView的Virtual方式或者Android的ListView的方式.事先不创建这些Item,只调用ListBox的SetCount即可,然后可以给Listbox一个OnCreateItem方法,需要显示哪些Item就调用OnCreateItem来创建.这样既节约内存,又可以做到高速.或许易博龙认为这是个比较少的需求,所以留给我们自己来实现.
----------------------------------------------
-
作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-10 3:23:04
21楼: FireMonkey中,动态创建一个bmp位图,就必须有很多技巧,何况是combobox,listbox这些,不是实战写代码,是体会不到这些苦的。
----------------------------------------------
-
作者:
女 blbz (冰力不足) ▲▲▲△△ -
普通会员
2014-2-10 3:42:35
22楼: FireMonkey好多代码,在win32平台上运行成功,到了ios真机,又往往没辙。泪奔~
----------------------------------------------

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多