![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как корректно (!) не дать приложению закрыться
Эдуард © (2003-09-03 17:29:00)
Часто задают вопрос, о том, как не дать приложению закрыться по нажатию Х на заголовке формы. На него всегда отвечают примерно так: "Обрабатывай OnCloseQwery, и CanClose := false"...
Господа, суть проблемы:
Если сделать так как указано выше, то при выходе из виндов (выход или рестарт, не спячка), система вызывает это событие, а приложение не даёт себе закрыться, а, например, плюхается в трэй.
В результате выход или рестарт не выполняется, пока не выгрузишь своё приложение, и не нажмёшь Пуск\Завершение_работы\... вторично...
Можно конечно воспользоваться напр. PowerOff, который такие приложения выгружает принудительно, но всё же, как корректно отделять запросы на закрытие формы при нажатии на Хв заголовке формы и при запросе со стороны системы?
Заранее спасибо!
Эдуард (2003-09-04 11:22:00) [1]
Огромное спасибо за ответы!
Verg (2003-09-04 10:33:00) [2]
TForm1 = class(TForm)
......
.....
FShutDown : boolean;
procedure OnWM_QUERYENDSESSION(var Msg: TMessage); message WM_QUERYENDSESSION;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
.....
procedure TForm1.OnWM_QUERYENDSESSION(var Msg: TMessage);
begin
ShutDown:=true;
inherited;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=FShutDown;
end;
Di.ma2002@mail.ru (2003-09-04 05:21:00) [3]
Или можешь просто отключить Alt+F4, кнопочку X, убрать системное меню, а дальше проверять Sender если он = Sender твоей кнопки или твоему пункту меню тогда показываешь пароль а иначе закрываешь просто !!
Anatoly Podgoretsky (2003-09-03 17:33:00) [4]
WM_QUERYENDSESSION