Форум: "Начинающим";
Текущий архив: 2008.05.11;
Скачать: [xml.tar.bz2];
ВнизКак отменить Close? Найти похожие ветки
← →
NewSer (2008-04-12 08:38) [0]Как остановить выполнение функции Close? Т.е. сделать так, чтобы если пользователь случайно нажал кнопку "Закрыть" (в заголовке формы [x]), появилось окно, в котором нажатие на "Нет" отменило бы закрытие окна.
← →
Riply © (2008-04-12 08:44) [1]> [0] NewSer (12.04.08 08:38)
> Как остановить выполнение функции Close? Т.е. сделать так,
> чтобы если пользователь случайно нажал кнопку "Закрыть"
Сначала надо понять как определить, что кнопка была нажата именно "случайно" :)
Не знаю как кому, а меня раздражают программы,
спрашивающие "Вы действительно хотите меня закрыть ?"
← →
Danco © (2008-04-12 08:58) [2]
> NewSer
> Как остановить выполнение функции Close?
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Application.MessageBox("Вы действительно хотите закрыть программу?", "Заголовок окна",
MB_DEFBUTTON1 + MB_ICONEXCLAMATION + MB_YESNO) = IDYES then
begin
CanClose:=True;
Halt;
end else
CanClose:=False;
end;
...глупо, но работает =)))
← →
NewSer (2008-04-12 09:05) [3]Спасибо, Danco!
А почему ты считаешь, что ...глупо ???
← →
{RASkov} © (2008-04-12 09:11) [4]> [3] NewSer (12.04.08 09:05)
> А почему ты считаешь, что ...глупо ???
Потому как логическое условие проверяет, а затем переменной назначает так же логическое значение.....
Да еще и Halt нафик не нужен...
CanClose:=MessageBox()=...;
← →
Leonid Troyanovsky © (2008-04-12 10:47) [5]
> {RASkov} © (12.04.08 09:11) [4]
> CanClose:=MessageBox()=...;
& WM_QUERYENDSESSION
--
Regards, LVT.
← →
{RASkov} © (2008-04-12 10:57) [6]> > А почему ты считаешь, что ...глупо ???
> [5] Leonid Troyanovsky © (12.04.08 10:47)
> WM_QUERYENDSESSION
Да, кстати, забыл я про это указать.
Автору:
Данный обработчик OnCloseQuery "плох" тем, что может препятствовать нормальному завершению работы виндовс.... Имей это в виду.
ЗЫ: Сообщение которое не нужно игнорировать при таком подходе, хотя.... может зависеть от задачи, но всеж....)
← →
Danco © (2008-04-12 11:04) [7]> {RASkov}
> Данный обработчик OnCloseQuery "плох" тем, что может препятствовать
> нормальному завершению работы виндовс.... Имей это в виду.
>
> ЗЫ: Сообщение которое не нужно игнорировать при таком подходе,
> хотя.... может зависеть от задачи, но всеж....)
да... я знаю ...поэтому и говорю что не очень хороший вариант... :) но все-таки...)
← →
{RASkov} © (2008-04-12 11:10) [8]> [7] Danco © (12.04.08 11:04)
> > {RASkov}
> да... я знаю
Раз знаешь о проблеме, то предупреждай, а не просто говори, что глупо.
Тем более, что это не глупо, а всего лишь требует внимания ;)
← →
Danco © (2008-04-12 11:13) [9]
> Раз знаешь о проблеме, то предупреждай, а не просто говори,
> что глупо.
> Тем более, что это не глупо, а всего лишь требует внимания
> ;)
>
не ругайся :)
← →
{RASkov} © (2008-04-12 11:20) [10]> [9] Danco © (12.04.08 11:13)
> не ругайся :)
когда ругаются - смайлы ставят? :)
Смайл(Smile), если что - улыбка. Хотя есть и злые, страшные, гневные.... "смайлы" :)
← →
Danco © (2008-04-12 11:24) [11]> {RASkov}
Если у тебя есть вариант по лучше... то поделись ..мне то же интересно узнать)
2 программы и именно так работают... самого раздражает, что мешает выключению виндовс ...как от этого избавиться? :)
← →
{RASkov} © (2008-04-12 11:25) [12]Кстати, чтоб Рипли это дело не раздражало, то нужно такое поведение программы сделать опционально.... причем с "галочкой" в самом вопросе)
:о)
← →
{RASkov} © (2008-04-12 11:31) [13]> [11] Danco © (12.04.08 11:24)
> Если у тебя есть вариант по лучше... то поделись ..мне то
> же интересно узнать)
Если "принудительное" закрытие программы окажеться без серьезных последствий, например не нужно сохранять данные введенные пользователем, то перенести алгоритм вопроса о закрытии программы с OnCloseQuery в OnClose где выставлять параметр Action.
А иначе он(OnCloseQuery) для того и придуман, чтоб предотвратить потерю данных....
← →
{RASkov} © (2008-04-12 11:36) [14]> где выставлять параметр Action.
т.е. чтоб предотвратить "закрытие пользователем" нужно выставить var параметр обработчика OnClose - Action:=caNone
← →
{RASkov} © (2008-04-12 11:38) [15]На завершение Виндовс это не влияет, более того... при завершении виндовс, данный обработчик(OnClose) не выполняется!
← →
Danco © (2008-04-12 11:52) [16]> {RASkov}
> На завершение Виндовс это не влияет, более того... при завершении
> виндовс, данный обработчик(OnClose) не выполняется!
Проверил ...все отлично ...спасибо )
← →
Danco © (2008-04-12 11:58) [17]> NewSer
> Как остановить выполнение функции Close?
> А почему ты считаешь, что ...глупо ???
этот код намного лучше ...используй его)procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Application.MessageBox("Вы действительно хотите закрыть программу?", "Заголовок окна",
MB_DEFBUTTON1 + MB_ICONINFORMATION + MB_YESNO) = IDYES then
Action:=caFree
else
Action:=caNone;
end;
Ура! RASkov`у
← →
{RASkov} © (2008-04-12 12:16) [18]> [17] Danco © (12.04.08 11:58)
> этот код намного лучше ...используй его)
Все зависит от задачи, и поэтому данный код в некоторой степени - опасный! :)
← →
NewSer (2008-04-12 17:08) [19]))))))) Опять загадки!
> данный код в некоторой степени - опасный!
Только я успел воспользоваться подсказкой
>Danco © (12.04.08 08:58) [2] и > {RASkov} © (12.04.08 09:11) [4]
как получил новую, и снова с подвохом ;-)
← →
AIK © (2008-04-12 17:37) [20]
> NewSer (12.04.08 17:08) [19]
> ))))))) Опять загадки!
>
> > данный код в некоторой степени - опасный!
>
> Только я успел воспользоваться подсказкой
> >Danco © (12.04.08 08:58) [2] и > {RASkov} © (12.04.
> 08 09:11) [4]
> как получил новую, и снова с подвохом ;-)
см. пост 5, 6
← →
Loginov Dmitry © (2008-04-12 19:59) [21]> Как остановить выполнение функции Close? Т.е. сделать так,
> чтобы если пользователь случайно нажал кнопку "Закрыть"
> (в заголовке формы [x]), появилось окно, в котором нажатие
> на "Нет" отменило бы закрытие окна.
ЗАЧЕМ ЭТО ДЕЛАТЬ! Пускай оконо закроется! Что тут страшного? Зато пользователя не будешь доставать пустыми сообщениями!
Другое дело - когда ошибочное закрытие программы может привести к потере важных данных. Тут уж будь добр предоставить возможность отмены!
← →
Пробегал3... (2008-04-12 20:40) [22]
> "плох" тем, что может препятствовать нормальному завершению
> работы виндовс....
И что тут плохого? Многие считают что даже наоборот ...
← →
Danco © (2008-04-12 20:41) [23]
> NewSer (12.04.08 17:08) [19]
>
> ))))))) Опять загадки!
>
> > данный код в некоторой степени - опасный!
>
> Только я успел воспользоваться подсказкой
> >Danco © (12.04.08 08:58) [2] и > {RASkov} © (12.04.
> 08 09:11) [4]
> как получил новую, и снова с подвохом ;-)
Опасный в том случае если ты собираешься сохранять важную информацию при закрытии программы... :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.11;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c