Einzelnen Beitrag anzeigen

AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
269 Beiträge
 
Delphi 12 Athens
 
#2

AW: IOS UniDac While Schleife mit Progressbar

  Alt 17. Feb 2023, 17:56
Sieht das so aus, dass er auf 0 % steht und dann nach einer kurzen Weile plötzlich direkt auf 100 % hochgeht?

Auf IOS gibt es nämlich das Problem, dass optische Änderungen außerhalb des Mainthreads nicht direkt eine Aktualisierung der Optik auslösen.
D.h. in dem Fall würde der Ladebalken ganz normal angepasst, jedoch aktualisierte sich die Optik der Maske erst ganz am Ende, so dass der Ladebalken optisch sofort von 0 % auf 100 % ginge.
Ich habe auf IOS tatsächlich noch nie mit einem Ladebalken herumgespielt, aber das könnte passen, da du das ja in einem eigenen Thread machst.

Wenn du austesten willst, ob das der Fall ist, müsstest du deine Funktion mal im Mainthread ausführen. Ist meine Theorie korrekt, müsste es auf diese Weise so aussehen wie erwartet.

Sollte es dieses Problem sein gibt es zwar einen Trick, aber der könnte mit einem Ladebalken problematisch sein:

Man kann ein optisches Update aus einem Thread heraus dadurch erzwingen, dass man sich z.B. ein sichtbares TMemo mit Höhe 0 irgendwo auf die Maske legt und sich dann eine Methode erstellt, welche zuerst ein Memo.SetFocus und dann ein Memo.Repaint. Diese Methode ruft man dann direkt aus dem Thread auf, wenn man ein optisches Update erzwingen will.
Das Problem daran ist, dass dieser Workaround einen leichten Lag hat.

Ich habe das Problem immer dann, wenn ich nach einem erfolgreichen NFC Scan irgendwie die Optik ändere. Dafür ist der oben beschriebene Workaround ausreichend, da ich das nur ein einziges Mal nach meiner Optikanpassung machen muss.
In deinem Fall wäre das jedoch problematisch, da der Ladebalken ja eigentlich flüssig volllaufen soll.
  Mit Zitat antworten Zitat