Procedura TFormi.ButtonlClick (Expeditor: TObj ECT); var
I: Integer; începe pentru i: = 0-20 nu începe
// puteți face unele calcule
După calcularea // afișarea curentă ProgressBarl.Position Stare: = ProgressBarl.Position + 5; Sleep (100); // Face o întârziere de 100 milisecunde final;
În acest caz, ciclul începe de la 0 la 20. La fiecare etapă a ciclului poziției ProgressBar este crescut cu 5 și etapa XX, bucla este egală cu valoarea maximă znacheniyu- 100. Ciclul este setat la 100 ms întârziere strip nostru nu a alunecat prea repede, și veți vedea chiar iluzia de calcul. nu va întârzia necesară în exemple din lumea reală, pentru că în cazul în care calculul este efectuat atât de repede încât utilizatorul nu vede nici mișcarea cursorului, nu are nici un sens pentru a crea un ProgressBar.
Exemplul de mai sus nu este destul de universal, deoarece impune ca am stiut dinainte creștere de cinci unități pe fiecare pas. În caz contrar, există două soluții.
- Schimbarea proprietății ProgressBar componentă max 20, iar la fiecare pas incrementa singura. Acesta este un mod foarte convenabil, deoarece poziția ProgressBar va varia de la 0 la 20. Ciclul este valabil și în acest interval, astfel încât eșantionul poate fi simplificată și să apară așa cum se arată în Listing:
Procedura TFormi.ButtonlClick (Expeditor: TObj ECT); var
I: Integer; începe pentru i: = 0-20 nu începe
// puteți face unele calcule
// După calculul arată starea curentă
Sleep (100); // Face o întârziere de 100 milisecunde final;
În acest caz, nu avem nevoie pentru a face incrementarea pentru ProgressBar, ci mai degrabă imediat atribuie o valoare în poziția de proprietate i, deoarece valoarea poziției și valoarea I este modificată într-un interval de 0-20.
A doua modalitate este de a calcula poziția relativă condiție ProgressBar. În acest caz, poziția ProgressBar trebuie schimbat 0 la 100, iar aceste valori ar trebui să fie văzută ca procent. După aceea, procentul numărului de pe fiecare iterație a buclei. Nu vă faceți griji, acest calcul este foarte simplu și nu dificil de prelucrat. Uneori, această metodă este mai convenabil:
Procedura TFormi.ButtonlClick (Expeditor: TObj ECT); var
pentru i: = 0 până la 20 do
// puteți face unele calcule
După calcularea // afișa curent ProgressBarl.Position status: = rotund (i / 20 * 100); Sleep (100); // Face o întârziere de 100 milisecunde final;
În acest exemplu, poziția este calculată cu formula conversia numerelor într-un procentaj, adică. E. Valoarea curentă împărțită la maxim și înmulțit cu 100 (în acest caz și se înmulțește cu 20 Și 100). Rezultatul acestui calcul trebuie rotunjită, deoarece a existat diviziune, atunci rezultatul global va fi, în orice caz, să fie luate ca un număr fracționar între procesul de calcul, chiar dacă rezultatul ar trebui să fie în mod clar un întreg.
În acest din urmă caz, există unele erori din cauza operațiunilor de împărțire și creștere, dar în lumea reală pentru a observa această eroare nu este posibil, pentru că este mai puțin de jumătate de procent. Tot la fel, în cazul în care programul de retragere sunt întotdeauna erorile datorate scalarea.