maZi Posted August 20, 2008 Report Share Posted August 20, 2008 witam. mam taką procedurkę: procedure TForm1.Button2Click(Sender: TObject); begin for I := 0 to ListView1.Items.Count-1 do begin Application.ProcessMessages; ListView1.Items.Item[I].SubItems[0] := 'Wysyłam'; PostStream := TIdMultiPartFormDataStream.Create; IdHTTP1.Request.ContentType := PostStream.RequestContentType; PostStream.AddFile('file', ListView1.Items.Item[I].Caption, ExtractFileName(ListView1.Items.Item[I].Caption), ''); IdHTTP1.Post('http://unhost.pl/xxx.php', PostStream); Application.ProcessMessages; ListView1.Items.Item[I].SubItems[0] := 'Wysłany'; PostStream.Free; end; end; jak można z kodu się domyśleć status wysyłki jest widoczny w subitemie[0] w listview. domyślnie ma on wartość "Czekam", jednak podczas wysyłania pliku i po jego wysłaniu zmieniam wartości odpowiednio na "Wysyłam" i "Wysłany". wszystko ładnie śmiga, tylko dlaczego w trakcie wysyłki nie wyświetla się "Wysyłam" (dopiero po wrzuceniu pliku zmienia się status z "Czekam" na "Wysłany") ? co tutaj jest źle? z góry dzięki za pomoc. pozdro. maZi Link to comment Share on other sites More sharing options...
xevil21 Posted August 20, 2008 Report Share Posted August 20, 2008 a teraz?? procedure TForm1.Button2Click(Sender: TObject); begin for I := 0 to ListView1.Items.Count-1 do begin ListView1.Items.Item[I].SubItems[0] := 'Wysyłam'; Application.ProcessMessages; PostStream := TIdMultiPartFormDataStream.Create; IdHTTP1.Request.ContentType := PostStream.RequestContentType; PostStream.AddFile('file', ListView1.Items.Item[I].Caption, ExtractFileName(ListView1.Items.Item[I].Caption), ''); IdHTTP1.Post('http://unhost.pl/xxx.php', PostStream); Application.ProcessMessages; ListView1.Items.Item[I].SubItems[0] := 'Wysłany'; PostStream.Free; end; end; Link to comment Share on other sites More sharing options...
maZi Posted August 20, 2008 Author Report Share Posted August 20, 2008 no teraz jest good. powiedz mi tylko jeszcze czemu raz Application.ProcessMessages; jest pod kodem zmieniającym treść, a raz nad (tylko się nie smiać, bo dopiero się uczę ) Link to comment Share on other sites More sharing options...
xevil21 Posted August 20, 2008 Report Share Posted August 20, 2008 ListView1.Items.Item.SubItems[0] := 'Wysyłam'; - wysyłasz komunikat o zmianie wartości Application.ProcessMessages; - pozwalasz swojej aplikacji odebrać komunikaty tak w dużym skrócie chyba już kumasz dlaczego kolejność jest ważna w tej sytuacji Pozdrawiam! Link to comment Share on other sites More sharing options...
maZi Posted August 20, 2008 Author Report Share Posted August 20, 2008 no to dlaczego w takim razie drugie Application.ProcessMessages nie jest pod ListView1.Items.Item.SubItems[0] := 'Wysłany'; tylko nad ? Link to comment Share on other sites More sharing options...
xevil21 Posted August 20, 2008 Report Share Posted August 20, 2008 na moje oko to zaraz za tym pętla przechodzi do następnej iteracji i znowu trafia na to pierwsze Application.ProcessMessages; ale lepiej zawsze trzymaj sie opcji, że najpierw coś zmieniasz a pod tym dajesz Application.ProcessMessages; Pozdrawiam! Link to comment Share on other sites More sharing options...
maZi Posted August 21, 2008 Author Report Share Posted August 21, 2008 ok. dzięki za wyjaśnienie chociaż ciągle nie jest to do końca jasne. to nawet nie głupie, że korzysta z Application.ProcessMessages; w następnej iteracji, ale przecież gdyby tylko tak było to w ostatnim itemie w listview nie powinno się pokazać "Wysłany", prawda? Pozdrawiam. Link to comment Share on other sites More sharing options...
xevil21 Posted August 21, 2008 Report Share Posted August 21, 2008 ...to nawet nie głupie, że korzysta z Application.ProcessMessages; w następnej iteracji, ale przecież gdyby tylko tak było to w ostatnim itemie w listview nie powinno się pokazać "Wysłany", prawda? aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaa w ostatnim to już musi, po wyjściu z pętli przestajesz zamulać aplikacje... Link to comment Share on other sites More sharing options...
maZi Posted August 21, 2008 Author Report Share Posted August 21, 2008 no tak... racja, nie pomyślałem w takim razie całkiem wywalę to drugie Application.ProcessMessages; wszystko już jasne, temat uważam za zamknięty. jeszcze raz dzięki za wszystkie wyjaśnienia. pozdrawiam. maZi Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.