Cześć, mam klasę, która wykonuje pewną długą operację.
Szkielet wygląda tak:
function JakasFunkcja: boolean;
begin
for i:=0 to FieldCount - 1 do
begin
if Assigned(FOnProgress) then FOnProgress(currTable, i+1, tablesTotal, fieldsTotal);
application.ProcessMessagess;
dluga_funkcja;
for j:=0 to x do
begin
//jakieś operacje
application.ProcessMessages;
end;
end;
end;
Funkcja: dluga_funkcja to długa pętla operująca na TMemoryStream - pierwszym wywołaniem jest oczywiście application.ProcessMessages(w ciele pętli).
Skutkiem jest coś takiego, że jak oprogramuję sobie zdarzenie OnProgress np. tak:
label1.Caption:=intToStr(currTable);
label2.Caption:=intToStr(currField);
application.processMessages; //nie ma różnicy, czy jest, czy nie
label1 jest ok, natomiast w label2, widzę cały czas 1(dopóki nie zmieni się label1, kiedy się zmieni, w label2 widzę 10)
Czyli nie odświeża mi się label2 tak często jak powinien - pomimo użycia application.processMessages w kilku miejscach. Macie jakieś pomysły?