![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Положила на свой девовский бар эту дрянь, чтоб она мне показывала прогресс моих вычислений. Так она (читай, дрянь) не показывает почему-то ничего в процессе вычислений, а зато когда уже всё досчиталось, показывает мне уже заполненную линейку (одновременно с показом результата вычислений). Где здесь собака порылась??? Использовала и StepIt вкупе со Step, и StepBy(). Как нужно-то, чтоб линеечка увеличивалась В ПРОЦЕССЕ?
|
#2
|
||||
|
||||
![]() Все работает, просто надо знать как готовить, объясняю:
используйте Код:
Application.ProcessMessages; а еще лучше конечно, вычисления делать в отдельном потоке, чтобы главный поток программы не замораживался (конечно это уже нужен уровень профи). |
#3
|
|||
|
|||
![]() Спасибо за наводку, сейчас попробую.
Я правильно понимаю, что надо оставить все мои StepBy на местах и после StepBy эту строчку вставить? Странно, неужели именно этот компонент такой непослушный - другое-то всё перерисовывается нормально ![]() ПЫСЫ: про отдельный поток я повеселилась... мне ещё до такого уровня пахать и пахать... Последний раз редактировалось vikk, 17.12.2010 в 10:07. |
#4
|
|||
|
|||
![]() а если попробовать после Stepby();
дописать dxBarProgressItem.repaint; и не надо ProcessMessages; он иногда не оправдан, ввиду того что в этом случае обрабатываются все события посланные системой вашему приложению. т.е. все кнопки и т.д. продолжают отрабатывать пока идет вычисление (или я ошибаюсь?). а иногда надо заставить пользователя дождаться окончание операции, но при этом показывать ему прогресс. Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#5
|
|||
|
|||
![]() Спасибо, сейчас попробую. Первый вариант работает, но я боюсь, что он слишком много лишнего делает, а у нас система сложная, не хочется комп грузить понапрасну - там и так есть, чем загрузиться.
Слушайте, я что-то туплю: как у прогресс-айтема может быть рипейнт, если он не наследует от контролов? Или я чего-то не понимаю, но мне в списке методов рипейнта не выпадает и в хелпах девовских я не нашла рипейнта для прогресс-айтема. Грущу. Последний раз редактировалось vikk, 17.12.2010 в 17:24. |
#6
|
|||
|
|||
![]() К сожалению не стоит у меня этот компонент, а отображает он где? и как?
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#7
|
||||
|
||||
![]() dxProgressBar - сделан для управления в менеджере, он специально так сделан чтобы минимизировать влияние контролов на быстродействие, вам бы надо всетаки побороть себя и сделать все через отдельный поток, поверьте это не просто, но результат стоящий будет, сам когдато долго противился потокам, набил шишек, но зато теперь написать многопоточный граббер - раз плюнуть, да и вообще, любой процесс должен иметь возможность отмены либо отката, ну и конечно нельзя морозить главный поток!!!
![]() П.С. теперь то я даже немного жалею, что так позно взялся за потоки, столько нерационального делал... теперь то все очень рационально, многопоточно и красиво, и киньте сразу камнем в того кто скажет что делфи плохой! ![]() |
#8
|
||||
|
||||
![]() Ах да, и еще одна глупая ошибка начинающих... перерисовывать на каждом тычке, а перерисовать не бойтесь, вообщето в идеале, делатся отдельный поток, запускается таймер (напр. на каждую сек.) делается запрос сколько % уже выполнено, и если значение другое чем уже есть ТОЛЬКО ТОГДА меняем прогресс! Вот так будет вообще по феншую)
|
#9
|
|||
|
|||
![]() я вообще-то только "за" в плане любого профессионального роста! Подскажите мне только(пожаааалуйста), где почитать про эти самые потоки, чтоб попонятнее было, "от печки" - начиная с азов. Учебников-то по делфи - кучи, а как выбрать стоящий?
![]() |