Форум: "Начинающим";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];
Внизсобытие закрытия формы Найти похожие ветки
← →
Надежда (2007-07-22 21:16) [0]Как обработать событие закрытия формы (крестик)?
Пожалуйста, ответьте!
← →
begin...end © (2007-07-22 21:31) [1]OnCloseQuery
OnClose
← →
Надежда (2007-07-22 21:39) [2]Спасибо. А как быть если у меня выполняются расчеты по таймеру, а в это время пользователь нажал крестик и мне надо это событие обработать. т.е. в процессе расчетов анализировать нажат ли крестик?
← →
{RASkov} © (2007-07-22 21:47) [3]> [2] Надежда (22.07.07 21:39)
if Application.Terminated then ...
← →
{RASkov} © (2007-07-22 21:56) [4]Если необходимо наоборот предотвратить закрытие программы, то либо на OnClose параметр Action выставлять в caNone либо на OnCloseQuery CanClose в False....
Пример:
Перед вычислениями переменную var StartProc: Boolean; выставляем в True. (Соответственно после вычислений в False, также нужно предусмотреть "запасной выход" из программы :))
на OnCloseQuery:
CanClose:=not StartProc;
Вариантов куча.... может быть можно и без переменной обойтись - CanClose:=not Timer1.Enabled;
Вопрос подробнее задавай.....
← →
Leonid Troyanovsky © (2007-07-22 22:17) [5]
> Надежда (22.07.07 21:39) [2]
> событие обработать. т.е. в процессе расчетов анализировать
> нажат ли крестик?
В процессе расчетов любые сообщения, в том числе таймера
или закрытия окна, обрабатывать некому, бо первичный поток
занят оными расчетами.
Поэтому, надо разбавлять расчеты вызовами Application.ProcessMessages,
либо делать расчеты в отдельном TThread.
Оба способа имеют свои неудобства, но первый - проще.
--
Regards, LVT.
← →
Надежда (2007-07-24 11:24) [6]Спасибо!!! Разобрались. Надо было мне лучше подумать над алгоритмом программы. Спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c