Как перехватить нажатие на "крестик" формы? | |
---|---|
sphinx Автор Сообщений: 31188 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Хочется, чтобы выходил диалог - "Вы не обработали такие-то данные! Выйти, проигнорировав изменения или остаться на форме?"
Хотел через BINDEVENT() событие Destroy к собственному методу прибиндить, но не взлетело. P.S. Отдельную кнопку не предлагать - это будет изменение интерфейса, пусть привыкнут хоть 2-3 кнопки правильно нажимать, а то с ума сойдут. ------------------ "Veni, vidi, vici!"(с) |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
sphinx Автор Сообщений: 31188 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
QueryUnload?
------------------ "Veni, vidi, vici!"(с) |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
Taran Сообщений: 13626 Откуда: Красноярск Дата регистрации: 16.01.2008 |
ага
|
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Правильно хукать TerminateProcess))
|
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
sphinx Автор Сообщений: 31188 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Мне сдается можно пока попроще написать, один черт _SuperCheckOfClosingThisForm() у меня пока нет.
------------------ "Veni, vidi, vici!"(с) |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
sphinx Автор Сообщений: 31188 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
А TerminateThread? ;) ------------------ "Veni, vidi, vici!"(с) |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Хукать треды неправильно в общем случае.
|
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не надо release вызывать из QU. Лишнее и потенциально небезопасное - и так уже запущен процесс аналогичный release.
Не стоит и "безусловно" messagebox бросать. QU должен в определённых случаях срабатывать молча, быстро, и по возможности корректно прерывать "незаконченную" работу (откатывать изменения, или сохранять их в какое-то временное store, чтобы при следующем запуске начать с того места на котором прервались). ------------------ WBR, Igor |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Присоединяясь к предыдущим ораторам хотелось бы только еще заметить, что при попытке обработать нажатие на стандартный крестик, будут у тебя проблемы. Не в смысле цыганского какого-то предсказания а просто из практики. В каких-то ситуациях с этим могут бывать косяки. В результате я например предпочитаю в таких случаях, особенно в "промежуточных" формах, "пойти другим путем". Поскольку крестик на фоксовской форме совсем не так прост, как может показаться. Т.е. таки прячу у данной формы шапку и помещаю свою кнопку выхода, плюс вешая выход еще и на нажатие Esc, как бы привычная пользователю клавиша выхода, что обычно указываю всегда и на кнопке выхода: "выход - Esc". Ну а про "сообщение" Игорь собственно выше уже совершенно точно заметил, что совершенно не нужно оно в таких случаях. Я обычно молча все сохраняю, пользователь сам обязан отвечать за все свои действия по вводу. Ввел сумму с потолка - кто виноват. Единственное, что обязан программист - максимально проверять корректность ввода данных в комплексе, чтобы в таблицы никогда не записывалась противоречивая или недостаточная для корректности каждой записи информация. По поводу же, что без крестика "с ума сойдут" - так и хай с ними. Иначе от крестика тебе самому придется иногда сходить. Лучше уж пусть они. Кстати по интерфейсу еще, давнишнее наблюдение, заметил (не на фоксе, но тем не менее), немцы например (почему-то именно они обычно) предпочитают делать главные окна программ жестко фиксированного размера. У других обычно можно мышкой за границы и углы растаскивать формы, которые без масштабирования при этом начинают смотреться уродливо. У немцев же - нет! И в чем-то они и правы. Пусть без масштаба, зато никаких уродств. Поначалу для кого-то бывает непривычна такая жесткость размера. Но привыкнув, становится в принципе ничего. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
У меня в самом базовом классе форм, есть метод CheckExit
Пустой. В наследниках, можно что угодно написать. В базовом классе для редактирования, есть свойство chg, которое показывает менялись ли данные на форме. Дальше этот метод можно вызвать откуда хошь. По мне так выход что по кнопке закрыть, что по крестику - одинаков) ------------------ |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
+ 100500 + перехват "крестика" у _Screen-a. PS проблем с выходом пока не наблюдал ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Да не столько с самим выходом, сколько с правильной обработкой при выходе. В каких-то случаях точно были проблемы. Сейчас уже не помню точно, но что-то там есть, что не совсем так выполняется, как при обработке событий формы при нажатии на кнопку/Esc. Короче дай мне свою программу с крестиком - и я ее на раз подвешу, может быть даже с вылетом (и несохранением естественно). А мою с кнопкой - ты просто так уже не повесишь. ;) Вот такой был расклад помнится. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет никаких проблем с выходом из формы по "крестику". Нормально писать надо, без извращений, и всё будет хорошо. Есть проблемы с САМИМ крестиком - при запуске цепочки модальных форм он может заблокироваться (лечение тривиально), есть сложности с закрытием ВСЕЙ программы по крестику (если внутри в это время понаоткрыто всяких разных форм, особенно таких "тупых" что безусловный messagebox при попытке закрытия вывешивают).
Дополнительная кнопка закрытия с cancel=.t. - для реакции на esc - нормально, хотя и далеко не для всех случаев (esc вообще-то отменяет и текущий ввод в поле. И крайне недружественно при попытке отменить случайную ошибочку в одном поле ввода закрывать ВСЮ форму) - для диалогов и некоторых особо простых форм (особенно если там нет как такового "ввода данных") - пойдёт. Неизменные по размеру формы - конечно же лучше чем растягиваемые но БЕЗ корректного растягивания/масштабирования контролов внутри, но ХУЖЕ чем адекватная форма с продуманным ресайзом внутренних контролов (особенно если там списки/гриды, или большие editbox-ы имеются). Естественно не все формы в принципе имеет смысл растягивать/масштабировать. Тот же messagebox-подобный или inputbox-аналог с надписью да полем ввода для пары циферок - никакого разумного способа растягивать такого рода формы нет, а масштабироватние это отдельный вопрос (и не на уровне отдельных форм он должен решаться)... ------------------ WBR, Igor |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Держи:
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Как-нибудь на досуге возможно гляну. Хотя суть таки была совсем не в этом. Не в пустой форме. А в ряде отличий при обработке данных с разными способами закрытия. Ну что-то такое. Подробностей сейчас уже не помню. Помню только, что в итоге ряда экспериментов оставил не заблокированной лишь одну кнопку минимизации. Максимизацию заблокировал, чтобы не портила Впрочем, как давно уже в принципе понял (хотя и порой забываю про это) - у всех свои конкретные ситуации. У кого-то скем-то сходные, у кого-то нет. И в конечном итоге видимо нет особого смысла всегда на чем-то однозначно настаивать. Опыт того, кто пашет на гигантском тракторе поля в 100 гектар, бесполезен для того, кто пашет мотоплугом огород в палисаднике у окна. И наоборот. Как бы ни был бесценен и уникален при этом опыт каждого. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Мериться крестиком с кнопкой - это уже новое слово в отрасли.
Надеюсь, кнопка победит |
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
medstraxy для размышлений: крестик продолговатый, кнопка округлая...
|
Re: Как перехватить нажатие на "крестик" формы? | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
От души, тов.Симпле вдохнул в медстраха надежду
|
© 2000-2024 Fox Club  |