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