Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

Отрисова формы по ходу обработки данных   Найти похожие ветки 

 
SergeyV   (2004-02-13 14:30) [0]

Уважаемые Гуру, ну просветите пожалуйста "молодого" как это вы пишите хорошие программы :))

В программе идет длительная обработка данных (обрабтка больших массивов в математике или выполнение хранимых процедур в базе данных). Обработка разбита на несколько этапов.
На главной форме есть Memo в который выводятся комментарии по ходу решения. проблема в том что если пользователь запустив расчет, свернул окно, то развернув его прочитать комментарии уже не удасться.
Форма просто не успевает отрисовываться.

Пробовал разместить на форме Label и Timer чтобы писать время по ходу решения. В начале делаю
StartTime := Time;
а на обработчик таймера вешаю
StopTime := Time;
label.Caption:=TimeToStr(StartTime-StopTime)
и опять форма (а точнее Label на ней) не отрисовывается.


 
Семен Сорокин   (2004-02-13 14:32) [1]

В программе идет длительная обработка данных (обрабтка больших массивов в математике или выполнение хранимых процедур в базе данных). Обработка разбита на несколько этапов.
вытаскивай обработку в поток (TThread) а по окончании этапа отрисовывай через Synhronize.


 
olookin   (2004-02-13 14:32) [2]

Добавьте после всего этого Application.ProcessMessages


 
Семен Сорокин   (2004-02-13 14:32) [3]

если без потоков тогда Application.ProcessMessages надо добавить.


 
Тимохов   (2004-02-13 14:33) [4]

Используй Application.ProcessMessages - вызывай по ходу дела все будет отрисовываться. Или у окна c сообщением вызывай refresh.


 
VLAD-MAL   (2004-02-13 14:33) [5]

Application.ProcessMessages;
в каждой итерации цикла пробовал вызывать?


 
Тимохов   (2004-02-13 14:34) [6]


> VLAD-MAL (13.02.04 14:33) [5]

Если попробует в каждой итерации, то следующий его вопрос будет - почему дельфи такая медленная.

Автору. Не вызывай application.processmessages слишком часто - если у тебя большой цикл, то вызывай на каждые 100 итераций, 1000 или еще как - установи экспериментом.


 
YurikGl   (2004-02-13 15:44) [7]

Я делал Form.Repaint после каждого изменения содержания формы и все работало.


 
Тимохов   (2004-02-13 15:45) [8]


> Repaint

Логично - это тот же refresh


 
YurikGl   (2004-02-13 15:46) [9]

Кстати, а различие у них есть?


 
Alexey_85   (2004-02-13 15:47) [10]

To: YrikGI
ProcessMessages её вызовет...
RePaint толку не даст если я захочу перетащить форму во время выполнения трудоемкого кода?


 
YurikGl   (2004-02-13 15:48) [11]

Действительно, не перетаскивается. :(


 
Тимохов   (2004-02-13 15:49) [12]


>
> Alexey_85 (13.02.04 15:47) [10]

Точно не даст.
Repaint просто принудительно все перерисовывает. Но никаких сообщений при этом не обрабатывается.


 
KSergey   (2004-02-14 10:52) [13]

Автору: почитайте еще обсуждение здесь

http://delphimaster.net/view/1-1076405195/

А вообще вопрос освещен во всех факах по дельфи.


 
Anatoly Podgoretsky   (2004-02-14 11:05) [14]

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



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

Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.032 c
3-79635
Newb
2004-01-31 07:04
2004.02.25
Проблема с хранимой процедурой помогите :(((


14-80263
int64
2004-02-04 10:42
2004.02.25
Журналы


1-79744
CacoDemon
2004-02-12 10:49
2004.02.25
Можно ли в RichEdit...


6-80054
samalex
2003-12-18 14:19
2004.02.25
Про Socket


14-80217
TUser
2004-02-05 13:11
2004.02.25
Потрепаца





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский