Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2013, 05:27   #1
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию CanClose=False и проблема завершения работы винды

В общем сабж для меня не в новинку, в других случаях была возможность обойти.
Код:
procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MessageBox(Handle, 'Выйти из программы?', 'Выход', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES then
    CanClose:=True
  else
    CanClose:=False;
end;
При таком раскладе винда отказывается завершать работу, пока программа не будет закрыта (т.е. пока не будет выбран ответ "Да").
Собственно, вопрос: как обрабатывать сообщения ТОЛЬКО от крестика, чтоб винда (и не только она) могла спокойно закрыть приложение?
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 25.06.2013, 07:45   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

http://programmersforum.ru/showthrea...ueryEndSession
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.06.2013, 22:49   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Я фигею от таких конструкций...
Цитата:
Сообщение от alextrof94 Посмотреть сообщение
Код:
procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MessageBox(Handle, 'Выйти из программы?', 'Выход', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES then
    CanClose:=True
  else
    CanClose:=False;
end;
Зачем писать
Код:
if (((a=true) = true) = true) = true then
  b := true
else
  b := false;
вместо
Код:
b := a;
Так и в данном примере:
Код:
procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:= MessageBox(Handle, 'Выйти из программы?', 'Выход', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES;
end;
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access violation после завершения работы процедуры Dreanks Помощь студентам 4 15.10.2011 14:02
ожидание завершения работы макроса -Anton- Microsoft Office Excel 15 18.06.2011 18:17
Отмена закрытия консольного окна после завершения работы приложения FeloS Общие вопросы C/C++ 21 25.02.2011 16:34
Как программно вызвать окно завершения работы UfoRoot Win Api 4 21.01.2009 11:15
Перехват завершения работы ОС vynt Win Api 7 19.05.2008 08:59