|
|
|
Grid(ёныш)
|
|||
|---|---|---|---|
|
#18+
При нажатии на крестик в правом верхнем углу формы срабатывет событие формы QueryUnload(). Если в этом событии дать команду NODEFAULT, то закрытие формы будет отменено. При выполнении команды RELEASE или метода формы Release() событие QueryUnload() игнорируется и не исполняется. Обычно на форме есть кнопка "Выход", при нажатии на которую выполняются необходимые действия и дается команда ThisForm.Release(). Тогда в событии QueryUnload() пишется примерно такой код Код: plaintext 1. 2. Здесь CmdExit - это имя той самой кнопки "Выход". Т.е., по сути, при нажатии на крестик здесь произошла отмена автоматического закрытия формы и вызов пользовательского метода для закрытия формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2006, 18:28 |
|
||
|
Grid(ёныш)
|
|||
|---|---|---|---|
|
#18+
У меня на форме есть кнопка выхода (там имеется Set filter to), но хотелось бы и по выходу на крестик происходило тоже самое, отключение фильтрации и закрытие формы. Если я правильно понял то в свойстве QueryUnload(),мне необходимо написать: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2006, 18:37 |
|
||
|
Grid(ёныш)
|
|||
|---|---|---|---|
|
#18+
Не надо искать в моем ответе "тайный смысл". Воспринимай его в данном случае БУКВАЛЬНО! При нажатии на крестик в правом верхнем углу форма закрывается. Разве ей надо при этом давать какие-то дополнительные команды? Т.е. дополнительный Release() ей вовсе не нужен. Она и так замечательно закроется. Смысл всего написанного по поводу QueryUnload() сводился к тому, что не надо писать дважды один и тот же код в разных местах. Надо ОТМЕНИТЬ закрытие формы по нажатию на крестик и запустить тот метод, который "штатно" (по твоему замыслу) обрабатывает закрытие формы. У тебя "штатным" методом закрытия формы является событие Click() на кнопке формы. Значит, в событии QueryUnload() необходимо вызвать этот твой штатный метод. Т.е. в явном виде написать команду вроде ThisForm.CmdExit.Click() Вызвать событие Click() нужной кнопки. Но этого недостаточно. Ведь в процессе обработки нажатия на кнопку выход может быть ОТМЕНЕН. Точнее, запрещен по разным соображениям. Но если все оставить как есть, то событие QueryUnload() отработает до конца и само, автоматически, без дополнительных команд ЗАКРОЕТ форму. Следовательно, необходимо отменить автоматическое закртие формы именно в событии QueryUnload(). Для этой цели используется команда NODEFAULT. Т.е. код в событии QueryUnload это Код: plaintext 1. 2. ВСЕ! НЕ НАДО больше ничего в нем писать! Теперь при нажатии на крестик в правом верхнем углу вместо автоматического закрытия формы будет запущен твой собственный метод закрытия формы, написанный в событии Click() кнопки CmdExit. Вот в нем-то как раз и пишешь: Код: plaintext 1. 2. Таким образом, если по каким-либо соображениям теперь тебе надо будет изменить код, исполняемый при закрытии формы ты изменяешь только код в событии Click() твоей кнопки "Выход" и уже не заботишся о том, что пользователь может нажать на крестик. Все-равно произойдет перенаправление действий на обработку события Click() кнопки. Не надо писать один и тот же код несколько раз в разных местах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2006, 19:48 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1592305]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
194ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 556ms |

| 0 / 0 |
