powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid(ёныш)
4 сообщений из 29, страница 2 из 2
Grid(ёныш)
    #33554039
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При нажатии на крестик в правом верхнем углу формы срабатывет событие формы QueryUnload(). Если в этом событии дать команду NODEFAULT, то закрытие формы будет отменено.

При выполнении команды RELEASE или метода формы Release() событие QueryUnload() игнорируется и не исполняется.

Обычно на форме есть кнопка "Выход", при нажатии на которую выполняются необходимые действия и дается команда ThisForm.Release(). Тогда в событии QueryUnload() пишется примерно такой код

Код: plaintext
1.
2.
NODEFAULT
ThisForm.CmdExit.Click()

Здесь CmdExit - это имя той самой кнопки "Выход". Т.е., по сути, при нажатии на крестик здесь произошла отмена автоматического закрытия формы и вызов пользовательского метода для закрытия формы.
...
Рейтинг: 0 / 0
Grid(ёныш)
    #33554048
chukcha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня на форме есть кнопка выхода (там имеется Set filter to), но хотелось бы и по выходу на крестик происходило тоже самое, отключение фильтрации и закрытие формы.

Если я правильно понял то в свойстве QueryUnload(),мне необходимо написать:

Код: plaintext
1.
Set filter to
ThisForm.Release() 
...
Рейтинг: 0 / 0
Grid(ёныш)
    #33554083
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо искать в моем ответе "тайный смысл". Воспринимай его в данном случае БУКВАЛЬНО!

При нажатии на крестик в правом верхнем углу форма закрывается. Разве ей надо при этом давать какие-то дополнительные команды? Т.е. дополнительный Release() ей вовсе не нужен. Она и так замечательно закроется.

Смысл всего написанного по поводу QueryUnload() сводился к тому, что не надо писать дважды один и тот же код в разных местах. Надо ОТМЕНИТЬ закрытие формы по нажатию на крестик и запустить тот метод, который "штатно" (по твоему замыслу) обрабатывает закрытие формы.

У тебя "штатным" методом закрытия формы является событие Click() на кнопке формы. Значит, в событии QueryUnload() необходимо вызвать этот твой штатный метод. Т.е. в явном виде написать команду вроде

ThisForm.CmdExit.Click()

Вызвать событие Click() нужной кнопки.

Но этого недостаточно. Ведь в процессе обработки нажатия на кнопку выход может быть ОТМЕНЕН. Точнее, запрещен по разным соображениям. Но если все оставить как есть, то событие QueryUnload() отработает до конца и само, автоматически, без дополнительных команд ЗАКРОЕТ форму. Следовательно, необходимо отменить автоматическое закртие формы именно в событии QueryUnload(). Для этой цели используется команда NODEFAULT.

Т.е. код в событии QueryUnload это

Код: plaintext
1.
2.
NODEFAULT
ThisForm.CmdExit.Click()

ВСЕ! НЕ НАДО больше ничего в нем писать!

Теперь при нажатии на крестик в правом верхнем углу вместо автоматического закрытия формы будет запущен твой собственный метод закрытия формы, написанный в событии Click() кнопки CmdExit. Вот в нем-то как раз и пишешь:

Код: plaintext
1.
2.
SET FILTER TO
ThisForm.Release()

Таким образом, если по каким-либо соображениям теперь тебе надо будет изменить код, исполняемый при закрытии формы ты изменяешь только код в событии Click() твоей кнопки "Выход" и уже не заботишся о том, что пользователь может нажать на крестик. Все-равно произойдет перенаправление действий на обработку события Click() кнопки. Не надо писать один и тот же код несколько раз в разных местах.
...
Рейтинг: 0 / 0
Grid(ёныш)
    #33554330
chukcha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ БОЛЬШОЕ спасиба, и всем...всем за помощь!
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid(ёныш)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]