2013-08-06 37 views
4

自從版本1開始,我們正在使用Firemonkey,但仍然發現更新當前在屏幕上可見的組件的困難。有許多「辦法」,申請在Firemonkey重繪,也許是太多:Firemonkey - 更新可視組件

  • 應用樣式(ApplyStyle事件) - 主要是當它成爲在屏幕上
  • 可見請求「.repaint」 - 某些組件有這
  • 請求「.realign」 - 某個作品,FMX的當前版本似乎跌落/隱藏
  • 請求「.invalidate」 - 一些部件,大多是形式,有這個
  • 請求「.invalidateRect」 - 最組件有這個
  • 手動調用ApplyStyle事件 - 不能保證工作和設計方面是不正確...

鑑於該平臺缺乏文檔,有一個「明確定義」的方式來改變外觀(內在價值當一個組件已經被顯示了嗎?即已經存在且在屏幕上可見的listboxItem,TGrid單元格等等。希望你的想法...

+0

感謝Peter - FMX是Delphi和C++ :-) –

回答

2

我不認爲有一個統一的'正確的方式'刷新Firemonkey組件的視覺。但是,作爲個人經驗的推薦,我會採用.repaint路由 - 此方法位於TControl級別,因此它位於基元和樣式化控件(通常由基元組成)之前,因此適用於所有的視覺控制。它也不需要參數,所以它是一個很好的全面解決方案。

我已經注意到,Firemonkey一直有一個問題,正確地重新繪製它自己的控件。通常我會留下前面控件/原始視覺的「陰影」,並且必須手動調用.repaint來更新它。對於FM2和FM3(這可能是因爲對移動平臺進行了優化),這種情況明顯變得更糟,因此手動執行.repaint--尤其是在諸如TGlow和移動或旋轉控制/基元等效果的情況下,對我來說已成爲標準做法。