Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TForm.OnShow [D6, WinXP]


Страницы:   1 2

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 поставь


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо