Stimmt - in den Quelltexten sie ist
protected. Geht aber trotzdem ohne Probleme: Irgendwie scheinen die gelieferten
DCU's nicht mit den Quelltexten übereinzustimmen. Das ist mir schon an vielen Stellen aufgefallen, weil der Compiler Konstanten nicht finden konnte, obwohl sie in den Quellen von Firemonkey enthalten sind. Sollte es bei Dir trotzdem nicht funktionieren, nutze einfach einen Class-Helper.
Die Methode habe ich herausgefunden, nachdem ich den Ablauf der Formularaktualisierung debuggt hatte. Die Methode
Repaint bewirkt ja leider nicht wie in der
VCL ein
Invalidate+
Update sondern nur das
Invalidate. Insofern ist das eine völlig falsche und irreführende Benennung in Firemonkey.
Ja, ich benutze die Methode selbst. Beim Betätigen eines Buttons wird die Kamera in einem Viewort3D bewegt. Das Bild wird normalerweise erst aktualisiert, nachdem die linke Maustaste losgelassen wurde. Das geht natürlich gar nicht und deshalb hatte ich mich auf die Suche nach einer Lösung begeben. Der Aufruf von
PaintRects funktioniert sehr zuverlässig und verzögerungsfrei, da keinerlei Nachrichten geschickt werden und das
Repaint unmittelbar ausgeführt wird.
Delphi-Quellcode:
[...]
PaintRects([Viewport3D1.ClipRect]);
[...]
Das Verfahren funktioniert deshalb sogar in einer For-To-Schleife ohne
Application.ProcessMessages oder ähnlichen Dingen.
Insofern hast Du vollkommen Recht: Firemonkey ist viel direkter als die
VCL. Die Entwickler müßten es nur mal hinbekommen, die Methoden ordentlich zu benennen und nicht alles in
protected oder
private-Abschnitten zu verstecken.