我们从版本1开始使用Firemonkey,但仍然发现更新屏幕上当前可见的组件时遇到困难.在Firemonkey中有许多’方法’请求重绘,可能太多了:
>应用样式(ApplyStyle事件) – 主要是在屏幕上显示时
>请求“.repaint” – 有些组件有这个
>请求“.realign” – 有时工作,当前版本的FMX似乎放弃/隐藏它
>请求“.invalidate” – 某些组件(主要是表单)具有此功能
>请求“.invalidateRect” – 大多数组件都有此
>手动调用ApplyStyle事件 – 不保证工作和设计明智不正确…
鉴于该平台缺乏文档,当组件已经显示时,是否有一种“定义明确”的方式来改变视觉外观(样式的内部值)?即一个已经存在且在屏幕上可见的listboxItem,一个TGrid单元格,依此类推.非常感谢你的想法……
最佳答案 我认为没有一种统一的“正确方法”来刷新Firemonkey中组件的视觉效果.
但是,作为个人经验的推荐,我将采用.repaint路径 – 此方法处于TControl级别,因此它位于基元和样式控件(通常由基元组成)之前,因此适用于所有可视控件.它也不需要参数,因此它是一个很好的全面解决方案.
我注意到Firemonkey一直有一个问题正确地重新控制它自己的控制.通常我会留下前一个控件/原语视觉的“阴影”,并且必须手动调用.repaint来更新它.这在FM2和FM3上明显变得更糟(可能是由于对移动平台的优化),因此做一个手动.repaint – 特别是在TGlow和移动或旋转控件/基元等效果的情况下,已成为标准做法我.