![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TForm.OnShow [D6, WinXP]
begin...end © (2004-08-13 16:24:00)Событие TForm.OnShow возникает до того, как форма показана, или сразу после этого?
Поясню, для чего это надо.
Нужно следующее: показать форму модально, выполнить некий длительный процесс (всё это время форма показывается и на ней отображается информация о ходе процесса), по окончании процесса форма закрывается. Пользователь может прервать выполнение процесса нажатием кнопки на форме.
Первое, что пришло в мою тупую голову - повесить этот процесс на обработчик OnShow, но, если так сделать, то процесс выполняется, но форма показывается только после его окончания. Т.е. такое впечатление, что форма показывается после OnShow. и ещё есть проблемы с тем, как её потом закрывать. Если это действительно тупой способ (подозреваю), то как ещё можно реализовать задуманное?
simpson (2004-08-13 16:42:00) [21]1. Показать форму.
2. В OnActivate запустить thread, в котором будет протекать "некий длительный процесс".
3. После окончания работы thread, послать сообщение окну и закрыть его. Ну, и в процессе выполнения thread проверять, не нажал ли юзер кнопку "Отмена"
begin...end (2004-08-13 16:39:00) [22]> Ega23 © (13.08.04 16:34) [4]
OnActivate уже пробовал, показывается она нормально, но я не могу её закрыть (т.е. я пытаюсь её закрыть прямо в OnActivate, вызывая после процедуры процесса Hide).
Sandman25 © (13.08.04 16:35) [6]
Т.е. немодально? Не хотелось бы...
Sandman25 (2004-08-13 16:35:00) [23]MyForm.Show;
MyForm.Update;
MyForm.DoCalculations;
begin...end (2004-08-13 16:35:00) [24]
> [3] Ega23 © (13.08.04 16:33)
Да.
Ega23 (2004-08-13 16:34:00) [25]OnActivate не поможет?
Ega23 (2004-08-13 16:33:00) [26]Подожди, этот процесс должен запуститься непосредственно во время показа формы? Точнее, сразу же за её отрисовкой на экране?
begin...end (2004-08-13 16:31:00) [27]
> [1] Ega23 © (13.08.04 16:29)
Ну не настолько же я тупой... :-)
Пробовал, не полегчало.
Ega23 (2004-08-13 16:29:00) [28]Application.ProcessMessages поставь