Einzelnen Beitrag anzeigen

Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#143

AW: FireMonkey Sammelthread

  Alt 15. Mär 2013, 22:17
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.
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (15. Mär 2013 um 22:20 Uhr)
  Mit Zitat antworten Zitat