![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
закрытие приложения [D5, Win2k]
sen © (2002-12-10 11:09:00)Добрый день.
В моей программе.
На событие запрос на закрытие формы canclose:=false.
Приложение закрывается только при щелчке на всплывающем меню ("закрыть"). Делаю application.terminate
При перезагрузке компа приложение закрываться не хочет (не дает перегрузить).
Вопрос: Как правильно отловить сообщение Windows для закрытия приложения.
Пробовал делать
if msg.message=wm_close then application.terminate;
Handled := True;
Последняя строка вообще странно влияет на закрытие приложения (оно становится незакрываемым даже через всплывающее меню) .
Кто - нибудь может помочь?
sen (2002-12-11 11:29:00) [1]это что значит
Song (2002-12-11 11:00:00) [2]hands.sys...
sen (2002-12-11 10:41:00) [3]Добрый день
Не работает WM_QUERYENDSESSION
Написал следующее:
if msg.message=WM_QUERYENDSESSION
then
begin
Flag:=True;
Handled := True;
application.terminate;
end;
end;
procedure Ttemperaturaform.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
canclose:=flag;
if flag then showmessage("true") else showmessage("false");
end;
procedure Ttemperaturaform.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
canclose:=flag;
if flag then showmessage("true") else showmessage("false");
temperaturaform.hide;
end;
при попытке закончить сессию windows показывает false, т.е. flag остается в false
То же самое и в случае WM_ENDSESSION
Song (2002-12-10 11:41:00) [4]ну дык просто переменная типа Boolean, которую устаналиваете в сообщении WM_QUERYENDSESSION
Var Flag:Boolen=False;
а в TForm.onCloseQuery будет CanClose:=Flag;
В событии WM_QUERYENDSESSION установите Flag в True
sen (2002-12-10 11:34:00) [5]Спасибо, а какой флажок на TForm.onCloseQuery
Song (2002-12-10 11:11:00) [6]WM_ENDSESSION/WM_QUERYENDSESSION
А на TForm.onCloseQuery придётся ещё флажок вводить.