Witam!
Uzywa takiego kodu:
ProgressBar1.Position := Round((NMSMTP1.BytesSent div NMSMTP1.BytesTotal)*100);
ale ten kod jest nie dokladny ProgressBar nie idze paseczek po paseczku tylko czekam na wysylanie i nagle caly sie laduje!
Witam!
Uzywa takiego kodu:
ProgressBar1.Position := Round((NMSMTP1.BytesSent div NMSMTP1.BytesTotal)*100);
ale ten kod jest nie dokladny ProgressBar nie idze paseczek po paseczku tylko czekam na wysylanie i nagle caly sie laduje!
Bo pewnie powinieneś odświeżać co jakiś czas ten progressbar. Spróbuj na formularz wstawić Timera i tę linijke kodu wstawić do zdarzenia obsugującego TIMER.
NP.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProgressBar1.Position := Round((NMSMTP1.BytesSent div NMSMTP1.BytesTotal)*100);
end;
Ustaw jeszcze w timerze odpowiedni czas...Mam nadzieje, ze pomoże
po
ProgressBar1.Position := ....
dodaj
Application.ProcessMessages
ProgressBar1.Position := Round((NMSMTP1.BytesSent div NMSMTP1.BytesTotal)*100);
Ja bym zmienił div na /, bo div to jest dzielenie całkowite (w tym wypadku jedyny wynik to 0 lub 1). Czyli:
ProgressBar1.Position := Round((NMSMTP1.BytesSent / NMSMTP1.BytesTotal)*100);
// może raczej (NMSMTP1.BytesSent*100) div NMSMTP1.BytesTotal - ŁF
a jak to zrobic na TidHTTP ?
ProgressBar1.Position := Round((NMSMTP1.BytesSent div NMSMTP1.BytesTotal)*100);
Ja bym zmienił div na /, bo div to jest dzielenie całkowite (w tym wypadku jedyny wynik to 0 lub 1). Czyli:
ProgressBar1.Position := Round((NMSMTP1.BytesSent / NMSMTP1.BytesTotal)*100);
A nie wygodniej
ProgressBar1.Max := NMSMTP1.BytesTotal;
ProgressBar1.Position := NMSMTP1.BytesSend;
??
Nie jest to dokladne! Nie wiem dlaczego ale jest nadal tak samo! szkoda!
moze p
rograessbar1.refresh
? :)