Главная Новые темы Список тем Задать вопрос Поиск  

Форум "Delphi"


Паскаль, Делфи


 #0 @Br 11.07.06 09:46:41 - 11.07.06 13:42:47

перерисовка формы при выполнении медленно текущего процесса



Взялся за написание небольшого проекта по автоматической обработке нескольких экселевских файлов. При обработке мне бы хотелось в главную форму передовать журнал событий, прогресс, расчетное время и т.п. вещи.
Вопрос в том, что пока идет процесс обработки главная форма ведет себя статично - заслоняеться другимиформами, и не перерисовывается. Перерисовывается только ProgressBarMain( TProgressBar) и активная на момент запуска кнопка. Ни ComboBoxProgress(TComboBox) ни сама форма не перерисовываются.
 - зделать FormMain.Refresh в цикле обработке приводит к увеличению времени самой обработки почти в два раза, и неприятному мельканию моей формы экране;
В чем хитрость?
1.запуск обработки отдельным потоком (использовать TThread)
2. или нужно вставить что-то вроде Application.{сюда чего-то} Цитата

 #1 VictorT © 11.07.06 10:23:31

Так ты же уже сам и ответил. Пунтк 1 предпочтительнее.
 #2 Axis_of_Evil © 11.07.06 10:47:37

Application.ProccesMessages,
  кажется так
 #3 @Br 11.07.06 13:24:28

Не выходит вот..
голову сломал уже как, как только запускаем отдельным потоком - получаем тоже самое: поток выполняеться, а форма статична. Я так понимаю поток монополизирует работу, а операционка форму не перерисовывает.
 Здесь есть секрет?!?
В нете накопал про функцию DoEvents (подробнее ) вроде как она решает подобные проблемы в VB. В D7 аналога ей пока найти не удаеться.
 Application.ProccesMessages пробовал по совету delphiWords, что бы они не говорили там - толку ноль!!!
 #4 Deep © 11.07.06 13:36:34

> Application.ProccesMessages пробовал
а ты где его вставляешь? Нужно в цикле, который тормозит.

попробуй еще функцию sleep()
 #5 jack128_ 11.07.06 13:36:59

В D7 аналога ей пока найти не удаеться.
Application.ProccesMessages - это и есть аналог.

ну если у тя и Application.ProccesMessages не работает, и вынос кода в поток тоже, значит это твой код - корявый..  И пока на него не посмотришь - ничего умного сказать не возможно..
 #6 @Br 11.07.06 13:42:47

Всем учасникам ОГРОМНОЕ СПАСИБО, и за критику тоже.
Разобрался Application.ProcessMessages в цыкле обработки, через каждые 150 записей. Правда скорость упала с 12мин до 18мин, но с этим уже можно жить. Сейчас поиграюсь еще и с преоритетами потока в котором происходит обработка - найду некую оптимальность для этого компа, потом это же нужно будет как-то перещитать для того компа(где прога будет работать), но это уже другой вопрос.




  • Написать ответ

    Имя: Регистрация HTML?
    smiles смайлики
    Потом перейти в:    
    паутина



      ©  webest.net, 2002-2007  

    top.mail.ru
    » Бесплатный счетчик посещений
    » Рейтинг сайтов