5

我们从版本 1 开始使用 Firemonkey,但在更新当前在屏幕上可见的组件时仍然遇到困难。在 Firemonkey 中请求重绘的“方法”有很多,可能太多了:

  • 应用样式(ApplyStyle 事件) - 主要是当它在屏幕上可见时
  • 请求“.repaint”——一些组件有这个
  • 请求“.realign” - 有时有效,当前版本的 FMX 似乎删除/隐藏它
  • 请求“.invalidate”——一些组件,主要是表单,有这个
  • 请求“.invalidateRect” - 大多数组件都有这个
  • 手动调用 ApplyStyle 事件 - 不能保证工作和设计是不正确的......

鉴于平台缺乏文档,当组件已经显示时,是否有一种“定义明确”的方式来更改视觉外观(样式的内部值)?即一个已经存在并且在屏幕上可见的listboxItem,一个TGrid 单元格,等等。将不胜感激你的想法...

4

1 回答 1

3

我不认为有一个统一的“正确方法”来刷新 Firemonkey 中组件的视觉效果。

但是,作为个人经验的建议,我会采取这.repaint条路线 - 这种方法是在TControl级别上的,因此它在基元和样式控件(通常由基元组成)之前,因此适用于所有视觉控件。它也不需要参数,所以它是一个很好的全方位解决方案。

我注意到 Firemonkey 总是有一个问题,它可以自行正确地重新绘制控件。通常我会留下控件/基元先前视觉的“阴影”,并且必须.repaint手动调用来更新它。这在 FM2 和 FM3 中变得明显更糟(可能是由于针对移动平台进行的优化),因此编写手册.repaint- 特别是在涉及诸如TGlow移动或旋转控件/基元之类的效果时,已成为我的标准做法。

于 2013-08-06T18:09:54.877 回答