FireMonkey控件是否等效于VCL Invalidate()方法?
-
29-10-2019 - |
题
我正在创建一些自定义的FireMonkey GUI控件。组件需要响应用户交互进行更新。VCL控件可以调用Invalidate()放入队列以进行重新绘制。FireMonkey有等效的方法吗?
FireMonkey控件具有Repaint()方法,但是AFAICT强制立即重新绘制控件。在某些情况下,队列类型系统会更合适。
解决方案
Control.InvalidateRect(RectF(0,0,width,height));
. 其他提示
FireMonkey的TControl.Repaint最终调用TPlatformWin.ReleaseWindow。如果Form.Transparency为false,则此方法将调用Windows InvalidateRect函数,就像VCL的TControl.Invalidate一样。
因此Repaint实际上会执行VCL的Invalidate相同的操作,除非Form.Transparency= true。
不隶属于 StackOverflow