【问题标题】:Firemonkey - updating visual componentsFiremonkey - 更新视觉组件
【发布时间】:2013-08-06 07:44:55
【问题描述】:

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

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

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

【问题讨论】:

  • 感谢 Peter - FMX 是 Delphi 也是 C++ :-)

标签: delphi user-interface updates firemonkey


【解决方案1】:

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

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

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

【讨论】:

  • .repaint 不在例如 TForm (fmx) 的范围内;
猜你喜欢
  • 1970-01-01
  • 2016-11-08
  • 2012-06-15
  • 2012-03-27
  • 1970-01-01
  • 2014-05-15
  • 2017-10-10
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多