Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.12.2010, 14:35
vikk vikk вне форума
Начинающий
 
Регистрация: 01.10.2010
Сообщения: 132
Репутация: 10
По умолчанию видимость прогресса с помощью dxBarProgressItem - НЕ ПОНИМАЮ!

Положила на свой девовский бар эту дрянь, чтоб она мне показывала прогресс моих вычислений. Так она (читай, дрянь) не показывает почему-то ничего в процессе вычислений, а зато когда уже всё досчиталось, показывает мне уже заполненную линейку (одновременно с показом результата вычислений). Где здесь собака порылась??? Использовала и StepIt вкупе со Step, и StepBy(). Как нужно-то, чтоб линеечка увеличивалась В ПРОЦЕССЕ?
Ответить с цитированием
  #2  
Старый 16.12.2010, 17:05
Аватар для MMM_Corp
MMM_Corp MMM_Corp вне форума
Прохожий
 
Регистрация: 12.12.2010
Сообщения: 37
Репутация: 13
По умолчанию

Все работает, просто надо знать как готовить, объясняю:

используйте
Код:
Application.ProcessMessages;
-каждый раз когда прогресс изменяется, эта команда заставляет обработать все сообщения необходимые программе (в вашем случае - перерисовка окна)

а еще лучше конечно, вычисления делать в отдельном потоке, чтобы главный поток программы не замораживался (конечно это уже нужен уровень профи).
Ответить с цитированием
  #3  
Старый 17.12.2010, 09:58
vikk vikk вне форума
Начинающий
 
Регистрация: 01.10.2010
Сообщения: 132
Репутация: 10
По умолчанию

Спасибо за наводку, сейчас попробую.
Я правильно понимаю, что надо оставить все мои StepBy на местах и после StepBy эту строчку вставить? Странно, неужели именно этот компонент такой непослушный - другое-то всё перерисовывается нормально И дельфийский прогрессбар работает нормально без этих вот дополнений. Мне просто нужно, чтоб всё на браменеджере было, одностильно штоль.

ПЫСЫ: про отдельный поток я повеселилась... мне ещё до такого уровня пахать и пахать...

Последний раз редактировалось vikk, 17.12.2010 в 10:07.
Ответить с цитированием
  #4  
Старый 17.12.2010, 10:31
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

а если попробовать после Stepby();
дописать dxBarProgressItem.repaint;

и не надо ProcessMessages; он иногда не оправдан, ввиду того что в этом случае обрабатываются все события посланные системой вашему приложению. т.е. все кнопки и т.д. продолжают отрабатывать пока идет вычисление (или я ошибаюсь?).

а иногда надо заставить пользователя дождаться окончание операции, но при этом показывать ему прогресс.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #5  
Старый 17.12.2010, 17:16
vikk vikk вне форума
Начинающий
 
Регистрация: 01.10.2010
Сообщения: 132
Репутация: 10
По умолчанию

Спасибо, сейчас попробую. Первый вариант работает, но я боюсь, что он слишком много лишнего делает, а у нас система сложная, не хочется комп грузить понапрасну - там и так есть, чем загрузиться.
Слушайте, я что-то туплю: как у прогресс-айтема может быть рипейнт, если он не наследует от контролов? Или я чего-то не понимаю, но мне в списке методов рипейнта не выпадает и в хелпах девовских я не нашла рипейнта для прогресс-айтема. Грущу.

Последний раз редактировалось vikk, 17.12.2010 в 17:24.
Ответить с цитированием
  #6  
Старый 17.12.2010, 18:09
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

К сожалению не стоит у меня этот компонент, а отображает он где? и как?
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #7  
Старый 17.12.2010, 18:50
Аватар для MMM_Corp
MMM_Corp MMM_Corp вне форума
Прохожий
 
Регистрация: 12.12.2010
Сообщения: 37
Репутация: 13
По умолчанию

dxProgressBar - сделан для управления в менеджере, он специально так сделан чтобы минимизировать влияние контролов на быстродействие, вам бы надо всетаки побороть себя и сделать все через отдельный поток, поверьте это не просто, но результат стоящий будет, сам когдато долго противился потокам, набил шишек, но зато теперь написать многопоточный граббер - раз плюнуть, да и вообще, любой процесс должен иметь возможность отмены либо отката, ну и конечно нельзя морозить главный поток!!!

П.С. теперь то я даже немного жалею, что так позно взялся за потоки, столько нерационального делал... теперь то все очень рационально, многопоточно и красиво, и киньте сразу камнем в того кто скажет что делфи плохой!
Ответить с цитированием
  #8  
Старый 17.12.2010, 18:52
Аватар для MMM_Corp
MMM_Corp MMM_Corp вне форума
Прохожий
 
Регистрация: 12.12.2010
Сообщения: 37
Репутация: 13
По умолчанию

Ах да, и еще одна глупая ошибка начинающих... перерисовывать на каждом тычке, а перерисовать не бойтесь, вообщето в идеале, делатся отдельный поток, запускается таймер (напр. на каждую сек.) делается запрос сколько % уже выполнено, и если значение другое чем уже есть ТОЛЬКО ТОГДА меняем прогресс! Вот так будет вообще по феншую)
Ответить с цитированием
  #9  
Старый 20.12.2010, 10:32
vikk vikk вне форума
Начинающий
 
Регистрация: 01.10.2010
Сообщения: 132
Репутация: 10
По умолчанию

я вообще-то только "за" в плане любого профессионального роста! Подскажите мне только(пожаааалуйста), где почитать про эти самые потоки, чтоб попонятнее было, "от печки" - начиная с азов. Учебников-то по делфи - кучи, а как выбрать стоящий?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025