Vor der While-Schleife würd' ich ja zuerst mal die Position der Progressbar auf 0 setzen und das Maximum auf die Anzahl der Datensätze.
Zitat:
Die Progressbar wird dynamisch erzeugt.
Wann denn? Wie sind denn die Standardwerte der entsprechenden Attribute der Progressbar?
Ist sie vielleicht deshalb so schnell auf 100, weil das Maximum weit unterhalb der Anzahl der Datensätze der Abfrage liegt?
Bei z. B. 'nem Maximum der Progressbar von 100 und 10.000 Datensätze, ist die Position des Maximums per Value + 1 halt bereits nach einem Prozent der zu verarbeitenden Datenmenge erreicht, siehe
FMX.StdCtrls.TProgressBar.Value.
Standard für Min = 0, für Max = 100, Value gibt damit die Verarbeitungsposition in Prozent an. Bei Value + 1 wären dann nach 100 Schleifendurchläufen 100% erreicht.
Wenn's um Prozentangaben gehen soll, könnte (theoretisch) sowas funktionieren:
(Syncform.SB1.FindComponent('Progressbar1') as TProgressbar).value := SYNCQUERY.RecNo * 100 div SYNCQUERY.RecordCount;