Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

ProgressBar подвисает во время вычислений   Найти похожие ветки 

 
dimon_programmer ©   (2004-09-15 19:15) [0]

Подскажите такую штуку!
Моя прога использует DLL. Из нее она вывзывает процедуру, которая долго выполняется(обработка графики). При этом прога знает
адрес, куда DLL ка пишет, сколько выполнено. Прога это число передает на ProgressBar. Но во время работы процедуры Progress
не движется, а только потом сразу показывает 100%. Как сдулать так, чтоб он прогрессировал во время вычислений?


 
Квэнди ©   (2004-09-15 19:16) [1]

Код покажи


 
Jel ©   (2004-09-15 19:20) [2]

Application.ProcessMessages


 
QuasiLamo ©   (2004-09-15 19:27) [3]

если есть циклы с вычислениями, а отдельный процесс делать не охота, я делаю так. В тело цикла ставится условие: если с момента последнего обновления прогресс бара прошло более 200мс(обычно бывает достаточно; если хочется большей плавности, можно уменьшить), то проводим реклькуляцию его положения и processmessages. Это дает заметный прирост по скорости выполнения. бар лишний раз не прорисовывается, вычислений меньше...
Для определения


 
QuasiLamo ©   (2004-09-15 19:28) [4]

последние два слова не читтать - они из другой оперы :)


 
dimon_programmer ©   (2004-09-15 19:52) [5]

Так ведь ProgressBar-то в главном ехе-шнике, а код то в библиотеке. И еще говорят есть таймер такой, что не подвисает в отличие от стандартного...


 
Rem   (2004-09-15 20:11) [6]

Прежде чем работать с DLL, разберитесь-ка лучше с очередями сообщений и принципами их обработки. Как все запущено... :(

>>Прога это число передает на ProgressBar

ProgressBar.Progress := MagicNumberFromDLL;
ProgressBar.Repaint;


 
Германн ©   (2004-09-16 03:07) [7]

Главное - понять, что мы(вы) все сидим в Windows!
И нам нужно принять правила Windows.
Windows рисует тогда, когда считает это нужным. Или мы заставляем его рисовать сейчас.


 
sniknik ©   (2004-09-16 08:07) [8]

> Так ведь ProgressBar-то в главном ехе-шнике, а код то в библиотеке. И еще говорят есть таймер такой, что не подвисает в отличие от
> стандартного...
все повесить можно, "умелыми" то руками. ;о)

> При этом прога знает адрес, куда DLL ка пишет, сколько выполнено.
ститай что она туда один раз пишет на 100%, т.к. нет прерывания на обработку сообщений (сам так сказал). вызвать в потоке эту функцию, возможно это и будет выходом, но на другое нарвешся наверняка.



Страницы: 1 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
1-1095333291
stud
2004-09-16 15:14
2004.10.03
поворот изображения на 90 градусов


3-1094205891
Леха5
2004-09-03 14:04
2004.10.03
Нужно чтобы скролл мыши листал записи в DBGrid e


4-1093774979
DimOn2
2004-08-29 14:22
2004.10.03
Заставка


1-1095682967
Zhekson
2004-09-20 16:22
2004.10.03
InputQuery или как реагировать на кнопки Ok и Cancel


3-1094107762
strelok-47
2004-09-02 10:49
2004.10.03
отлов момента ввода инфы в поле