2011-12-07 19 views
6

私はいくつかのカスタムFireMonkey GUIコントロールを作成しています。コンポーネントは、ユーザーの操作に応じて更新する必要があります。 VCLコントロールは、Invalidate()を呼び出して、再描画のためにキューに入れることができます。 FireMonkeyには同等のメソッドがありますか?FireMonkeyコントロールには、VCL Invalidate()メソッドと同等の機能がありますか?

FireMonkeyコントロールにはRepaint()メソッドがありますが、コントロールをすぐに再描画するように強制するAFAICTがあります。いくつかの状況では、待ち行列型システムがより適切であろう。

+0

私はまだXE2を使用していませんが、 "scene | object.refresh | redraw"のようなものがあると仮定します。 – ComputerSaysNo

+4

TControl.Realignは、ほとんどの場合、FMXコントロールに直接描画がないため、プリミティブで作られています。再配置を呼び出すと、プリミティブが再描画されます – az01

+0

http://stackoverflow.com/questions/8411143/firemonkey-controls-do-not-animate-smoothly – Shannon

答えて

2
Control.InvalidateRect(RectF(0,0,width,height)); 
+0

私の知る限り、これは私の質問に対する正解です。 InvalidateRect()メソッドはうまくいきませんでしたが、VCLとFMXの違いによると思います。ありがとうRelativ。 – Shannon

2

FireMonkeyのTControl.Repaintは、TPlatformWin.ReleaseWindowを呼び出して終了します。 Form.Transparencyがfalseの場合、このメソッドはVCLのTControl.Invalidateと同様にWindows InvalidateRect関数を呼び出します。

Form.Transparency = trueでない限り、Repaintは実際にはVCLのInvalidateと同じことを行います。

+0

Gielの説明をありがとう – Shannon

関連する問題