| 
| 
 | Вопрос # 3 117/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!как сделать так,чтобы когда я нажимаю кнопку закрыть в правом верхнем углу выходило окно сообшени?(типа вы хотите закрыть программу/да или нет/)
 
|  |   Вопрос задал: rommel (статус: Посетитель)Вопрос отправлен: 25 августа 2009, 00:14
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, rommel!Легко. Нужно обработать событие OnCloseQuery формы и записать туда такой код
 
   if MessageDlg('Закрыть форму', mtConfirmation, mbYesNo, 0) = mrYes then
    CanClose := true
  else
    CanClose := false;Если по выходу с процедуры CanClose будет False - форма не закроется. Дальше можно "наворачивать процедуру" - делать различные проверки.
 Только нужно быть аккуратным, а то можно сделать форму, которую нельзя закрыть без диспетчера задач. А это плохо.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 25 августа 2009, 00:53
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 28 августа 2009, 00:20; участников в обсуждении: 1. 
|   | Жикльор (статус: 5-ый класс), 26 августа 2009, 22:35 [#1]:А также можно использовать процедуру OnClose и написать код: <code>if not MessageDlg('Close Form',mtWarning,[mbYesNo],0) = mrYes then Action:=caNone;</code>
 Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию. |  
|   | Жикльор (статус: 5-ый класс), 26 августа 2009, 22:36 [#2]:Извините за теги. Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию. |  
|   | Жикльор (статус: 5-ый класс), 28 августа 2009, 00:20 [#3]:Нужно сгенерить обработчик события Form1.CloseForm(Sender: TObject; var Action:= TCloseAction); 
 В этом обработчике есть переменная Action. Вот мы ее и задаем в проверке. А caNone - это не делать ничего (проигнорировать), a caClose - закрыть окно.
 
 if MessageDlg('Close Form?',mtWarning,[mbYes,mbNo],0) = mrNo then Action:=caNone esle Action:=caClose;
 
 P.S. Если я даже где-то ошибся в букве не нужно же за это минус ставить. Она рабочая сам ею пользуюсь!
   Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |