Lazarus BGRAFlashProgressBar nie pokazuje wyników tylko przeskakuje do samego końca ?

Z Podręcznik Administratora by OPZ SGU
Wersja z dnia 17:36, 22 wrz 2012 autorstwa Adminka23 (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Załóżmy że mamy taki kod którego celem jest symulowanie flash progress bara:

var i:integer;
begin
BGRAFlashProgressBar1.maxvalue:=768*512;
for i := 0 to 768*512 do
    begin
     BGRAFlashProgressBar1.value := i;
    end;
end;   


Jeżeli go wykonamy, to aplikacja "zawiśnie" na chwilkę po czym pokaże proress bar na samym końcu... Spowodowane to jest tym że pętla nie czeka na wyśweitlenie rezultatu, tylko wykonuje się błyskawicznie.

Aby temu zaradzić należy dodać polecenie

Application.ProcessMessages;

Poprawny kod

var i:integer;
begin
BGRAFlashProgressBar1.maxvalue:=768*512;
for i := 0 to 768*512 do
    begin
     BGRAFlashProgressBar1.value := i;
     Application.ProcessMessages;
    end;
end;