Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 117

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
как сделать так,чтобы когда я нажимаю кнопку закрыть в правом верхнем углу выходило окно сообшени?(типа вы хотите закрыть программу/да или нет/)

Приложение:
  1.  


rommel Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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. Если я даже где-то ошибся в букве не нужно же за это минус ставить. Она рабочая сам ею пользуюсь! :-(
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:01
Выполнено за 0.02 сек.