gpt4 book ai didi

delphi - Firemonkey - 更新视觉组件

转载 作者:行者123 更新时间:2023-12-03 15:13:34 26 4
gpt4 key购买 nike

我们从版本 1 开始就使用 Firemonkey,但仍然发现更新当前在屏幕上可见的组件很困难。在 Firemonkey 中请求重画的“方式”有很多,也许太多了:

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

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

最佳答案

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

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

我注意到 Firemonkey 在自行正确重绘控件方面始终存在问题。通常,我会留下控件/基元先前视觉效果的“阴影”,并且必须手动调用 .repaint 来更新它。对于 FM2 和 FM3,这种情况明显变得更糟(大概是由于针对移动平台进行的优化),因此需要手动进行 .repaint ——尤其是在诸如 TGlow 和移动等效果的情况下或旋转控件/基元而言,已成为我的标准做法。

关于delphi - Firemonkey - 更新视觉组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18074417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com