2013-08-06 34 views
4

自从版本1开始,我们正在使用Firemonkey,但仍然发现更新当前在屏幕上可见的组件的困难。有许多“办法”,申请在Firemonkey重绘,也许是太多:Firemonkey - 更新可视组件

  • 应用样式(ApplyStyle事件) - 主要是当它成为在屏幕上
  • 可见请求“.repaint” - 某些组件有这
  • 请求“.realign” - 某个作品,FMX的当前版本似乎跌落/隐藏
  • 请求“.invalidate” - 一些部件,大多是形式,有这个
  • 请求“.invalidateRect” - 最组件有这个
  • 手动调用ApplyStyle事件 - 不能保证工作和设计方面是不正确...

鉴于该平台缺乏文档,有一个“明确定义”的方式来改变外观(内在价值当一个组件已经被显示了吗?即已经存在且在屏幕上可见的listboxItem,TGrid单元格等等。希望你的想法...

+0

感谢Peter - FMX是Delphi和C++ :-) –

回答

2

我不认为有一个统一的'正确的方式'刷新Firemonkey组件的视觉。但是,作为个人经验的推荐,我会采用.repaint路由 - 此方法位于TControl级别,因此它位于基元和样式化控件(通常由基元组成)之前,因此适用于所有的视觉控制。它也不需要参数,所以它是一个很好的全面解决方案。

我已经注意到,Firemonkey一直有一个问题,正确地重新绘制它自己的控件。通常我会留下前面控件/原始视觉的“阴影”,并且必须手动调用.repaint来更新它。对于FM2和FM3(这可能是因为对移动平台进行了优化),这种情况明显变得更糟,因此手动执行.repaint--尤其是在诸如TGlow和移动或旋转控制/基元等效果的情况下,对我来说已成为标准做法。