Сейчас на форуме: jinoweb, bartolomeo, rmn (+5 невидимых)

 eXeL@B —› Программирование —› ProgressBar
Посл.ответ Сообщение

Ранг: 95.5 (постоянный), 36thx
Активность: 0.080.04
Статус: Участник

Создано: 25 мая 2017 19:23 · Поправил: Rio
· Личное сообщение · #1

Hi All!
Пожалуйста посмотрите:
Code:
  1. for (int i = 0; i < 80000; i++)
  2. {
  3. Sleep(1000);
  4. ProgressBar1->StepIt();//так?
  5. ProgressBar1->StepBy(1000);
  6. Application->ProcessMessages();
  7. if (ProgressBar1->Max == 80000)
  8. {
  9.  
  10. }
  11. }

Далее написанного блока, не выполняется:
ProgressBar1->Visible = false;
p.s timer настроен

...
надо 80 сек....




Ранг: 331.1 (мудрец), 561thx
Активность: 0.190.06
Статус: Участник

Создано: 25 мая 2017 19:35
· Личное сообщение · #2

С такими параметрами: 80000 итераций и sleep = 1сек надо аж 22 часа ждать, чтобы из цикла выйти)

-----
Everything is relative...


| Сообщение посчитали полезным: Rio


Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 25 мая 2017 19:43
· Личное сообщение · #3

ТС знает толк в извращениях..... попробуй получить не Max-имальное "удовольствие" от цикла, а проверять Position.

-----
Don_t hate the cracker - hate the code.


| Сообщение посчитали полезным: -=AkaBOSS=-, Rio


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 25 мая 2017 19:47 · Поправил: -=AkaBOSS=-
· Личное сообщение · #4

Rio
ок, а кто и как должен делать инкремент прогрессбара?
при проверке на ProgressBar1->Max должен происходить break цикла или нет?
да и вообще, разве это не проверка на "потолок" прогрессбара?
и не уверен кстати насчёт необходимости Sleep в цикле обработки сообщений. Тормоза для "солидности"?

| Сообщение посчитали полезным: Rio


Ранг: 331.1 (мудрец), 561thx
Активность: 0.190.06
Статус: Участник

Создано: 25 мая 2017 20:12
· Личное сообщение · #5

Rio пишет:
надо 80 сек....

Убери три нуля в слипе и будет тебе 80 сек, в чем проблема то..., только правильно работать всё равно не будет, а условие задачи неизвестно, мы не экстрасенсы

-----
Everything is relative...




Ранг: 95.5 (постоянный), 36thx
Активность: 0.080.04
Статус: Участник

Создано: 25 мая 2017 20:17
· Личное сообщение · #6

Vamit пишет:
Rio пишет:
надо 80 сек....
Убери три нуля в слипе и будет тебе 80 сек, в чем проблема то..., только правильно работать всё равно не будет, а условие задачи неизвестно, мы не экстрасенсы

Имеется константа, например 80 секунд, после этого времени прогрессбар выключается(visible) и далее остальные действия.




Ранг: 331.1 (мудрец), 561thx
Активность: 0.190.06
Статус: Участник

Создано: 25 мая 2017 20:30
· Личное сообщение · #7

Rio пишет:
после этого времени прогрессбар выключается(visible) и далее остальные действия

Тогда зачем вообще цикл нужен, поставь таймер на 80 сек и в его обработчике делай что нужно

-----
Everything is relative...




Ранг: 95.5 (постоянный), 36thx
Активность: 0.080.04
Статус: Участник

Создано: 25 мая 2017 20:41 · Поправил: Rio
· Личное сообщение · #8

Vamit пишет:
Тогда зачем вообще цикл нужен, поставь таймер на 80 сек и в его обработчике делай что нужно

сделал так:
Code:
  1. int time2 = 0, tall = 5;
  2.  
  3. void __fastcall TForm1::Timer2Timer(TObject *Sender)
  4. {
  5. if (time2 == tall)
  6. {
  7. Timer2->Enabled = false;
  8. ProgressBar1->Visible = false;
  9. ShowMessage("All");
  10. }
  11.   time2++;
  12.   ProgressBar1->StepBy(1);
  13. }
  14. //---------------------------------------------------------------------------
  15.  
  16. void __fastcall TForm1::Button3Click(TObject *Sender)
  17. {
  18. ProgressBar1->Max = tall;
  19. Timer2->Enabled = true;
  20. }
  21. //---------------------------------------------------------------------------

Всех благодарю, всё нормально)


 eXeL@B —› Программирование —› ProgressBar
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати