![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запуск расчета сразу после отрисовки формы
Franzy © (2009-09-01 13:43:00)Есть программа, выполняющая некий трудоемкий расчет. Нужно, чтобы расчет начинался сразу после запуска программы, при этом окно программы должно быть активировано, т.е. в фокусе и поверх остальных окон, т.к. на форму в соотв. оконшки выводятся различные компоненты отчета о прогрессе расчета.
Если пуск прописать в OnCreate, окошко не рисуется вообще до окончания расчета. В OnShow - окошко не активируется. Вставка form1.activate не помогает. Т.е. программа статует как бы в свернутом состоянии. Причем при этом "висит" и не разворачивается, несмотря на вставки Application.processmessages при каждом обновлении отчета.
Как это реализовать правильно?
sniknik (2009-09-01 14:11:00) [41]можно послать самому сете сообщение и уже в нем чтото делать, точно будет после OnShow, если посылать в нем.
или банально поставить таймер, включать там же и выключать после 1й сработки.
или поток стартовать, к тому времени когда нужда будет синхронизироваться для отрисовки результатов, форма уже успеет появиться.
clickmaker (2009-09-01 14:09:00) [42]> А еще варианты есть?
Application.ProcessMessages в цикле расчета после очередной итерации.
А чем поток не устраивает?
Franzy (2009-09-01 14:03:00) [43]А еще варианты есть?
Медвежонок Пятачок (2009-09-01 13:50:00) [44]и правильно что забыл. ибо уточнение лишнее.
Franzy (2009-09-01 13:50:00) [45]Забыл уточнить: сами расчетные процедуры находятся в подключаемой dll.
clickmaker (2009-09-01 13:48:00) [46]> Как это реализовать правильно?
Запускать расчет в отдельном потоке. Тогда не суть важно, в каком событии.
Оповещать различные компоненты отчета о прогрессе расчета можно через PostMessage форме.