![]() |
Wie render ich auf iOS direkt ohne ProcessMessages aufzurufen?
Hallo,
ich würde gerne wissen ob es möglich ist auf iOS während eines blockierenden Aufrufes zu rendern ohne ProcessMessages aufzurufen. Also auf Windows geht das ja mit
Code:
und auf Android mit
if Supports(aForm, IPaintControl, PaintControl) then
PaintControl.PaintRects( UpdateRects );
Code:
Für iOS sollte es theoretisch auch mit PaintControl.PaintRects gehn wenn ich es mir im Debugger anschaue, aber es passiert dann einfach gar nichts. Hat jemand eine Idee?
if Assigned(aForm) then
begin FormHandle := TAndroidWindowHandle(aForm.Handle); if Assigned(FormHandle) then begin r := TFormRender.create(FormHandle); if Assigned(r) then begin r.Render; r.DisposeOf; r := nil; end; end; end; |
AW: Wie render ich auf iOS direkt ohne ProcessMessages aufzurufen?
Eigentlich bin ich kein Freund von Antworten, die die Frage nicht beantworten, aber...
Ein blockierender Aufruf sollte (auf den mobilen Plattformen) NIE im UI-Thread ausgeführt werden. Aus einem Thread kann man dann mit ForceQueue ein Routine aufrufen, die dann den Redraw-Code ausführt. Oder - was ich noch lieber mache - im nächsten OnIdle-Event. Mavarik :coder: |
AW: Wie render ich auf iOS direkt ohne ProcessMessages aufzurufen?
Ich weiß das es nicht Best Practice ist aber abgesehen davon das es Monate dauern würde alles umzuschreiben, sehe ich keinen Grund meinen Code mit Threads zu verkomplizieren wenn das genauso geht.
Ich hab jetzt schon ein paar Tage gesucht und jetzt nachdem ich die Frage gestellt habe finde ich die Antwort :lol:
Code:
Das ruft intern die display Methode vom GLSView auf. Hier kann zugemacht werden.
if Assigned(aForm) then begin
if TPlatformServices.Current.SupportsPlatformService(IFMXWindowService, IInterface(WindowSvc)) then begin WindowSvc.InvalidateImmediately(aForm); end; end; |
AW: Wie render ich auf iOS direkt ohne ProcessMessages aufzurufen?
Zitat:
Spätestens wenn mal wieder was Größeres am FMX umgebaut wird, kann dieser Code plötzlich nicht mehr funktionieren. Da wäre eine "ordentliche" Lösung bestimmt besser. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz