Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Firemonkey-更新可视组件_Delphi_User Interface_Updates_Firemonkey - Fatal编程技术网

Delphi Firemonkey-更新可视组件

Delphi Firemonkey-更新可视组件,delphi,user-interface,updates,firemonkey,Delphi,User Interface,Updates,Firemonkey,我们从版本1开始就在使用Firemonkey,但仍然发现难以更新当前在屏幕上可见的组件。在Firemonkey中,有许多“方法”可以请求重新绘制,可能太多了: 应用样式(ApplyStyle事件)-主要是当它在屏幕上可见时 正在请求“.repaint”-某些组件具有此功能 请求“.realign”-有时会起作用,FMX的当前版本似乎会删除/隐藏它 请求“.invalidate”-某些组件(主要是表单)具有此功能 请求“.invalidate”-大多数组件都有此功能 手动调用ApplyStyle

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

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

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

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

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


我已经注意到Firemonkey总是在自动正确地重新绘制控件时遇到问题。通常,我会留下控件/原语之前视觉效果的“阴影”,必须手动调用
.repaint
进行更新。FM2和FM3的情况明显恶化(可能是由于对移动平台进行了优化),手动重新绘制(尤其是在涉及
TGlow
和移动或旋转控件/原语等效果的情况下),已经成为我的标准实践。

谢谢彼得-FMX是Delphi和C++(-+):RePrice不在范围,例如TForm(FMX);