我们从版本 1 开始就使用 Firemonkey,但仍然发现更新当前在屏幕上可见的组件很困难。在 Firemonkey 中请求重画的“方式”有很多,也许太多了:
- 应用样式(ApplyStyle 事件) - 主要是当它在屏幕上可见时
- 请求“.repaint” - 有些组件有这个
- 请求“.realign” - 有时有效,当前版本的 FMX 似乎删除/隐藏它
- 请求“.invalidate” - 某些组件(主要是表单)具有此功能
- 请求“.invalidateRect” - 大多数组件都有这个
- 手动调用ApplyStyle事件 - 不保证工作并且设计方面是不正确的......
鉴于缺乏平台文档,当组件已经显示时,是否有一种“明确定义”的方法来更改视觉外观(样式的内部值)? IE。已存在且在屏幕上可见的 listboxItem、TGrid 单元格等。非常感谢您的想法...
我认为没有一个统一的“正确方法”来刷新 Firemonkey 中组件的视觉效果。
然而,作为个人经验的建议,我会采取.repaint
路线 - 该方法位于TControl
级别,因此它位于基元和样式控件(通常由基元组成)之前,因此适用于所有视觉控件。它也不需要参数,所以它是一个很好的全面解决方案。
我注意到 Firemonkey 在自动正确地重新绘制控件方面始终存在问题。通常,我会留下控件/基元先前视觉效果的“阴影”,并且必须调用.repaint
手动更新它。对于 FM2 和 FM3,这种情况明显变得更糟(大概是由于针对移动平台进行的优化),因此需要手动进行.repaint
-- 尤其是当诸如TGlow
就移动或旋转控件/基元而言,已成为我的标准做法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)