Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26151
Рейтинг: 2127
#1: 2007-12-12 00:05:47 ЛС | профиль | цитата
Galkov, объясни мне, почему не работает точка Close в дочерних формах? Я помню писал про это, но вот найти не смог, где писал.
Вот схемка
code_7932.txt
Почему, по кресту работает, а по кнопке (через метод doClose) нет?

Я заметил, что в Main форме за это отвечает Accept. И если ты посылаешь по doClose (как у нас сейчас)


Control.Perform(WM_CLOSE,0,1);
то Accept передает метод выхода.

Но зачем это? Разве точка Close не должна выставлять запрос всегда, а не только в определенных случаях? Почему нельзя передать


Control.Perform(WM_CLOSE,-1,0);
или убрать Accept вот отсюда


if Accept and(ToIntegerEvent(_data_Close)<>0) then exit;
и всегда выставлять запрос на верхнюю точку?

Ведь раньше работало. С чем связано убирание этого функционала?
карма: 22

0
файлы: 1code_7932.txt [766B] [358]
Ответов: 9906
Рейтинг: 351
#2: 2007-12-12 07:07:28 ЛС | профиль | цитата
1) Есть два способа закрыть: "мягкий" и "жесткий" (с запросом и без). Жесткий нужен хотя бы для того, чтобы тупо не переспрашивать во всех дочерних формах, если ты уже ответил на вопрос закрытия в верхней

2) Как сделать метод их жесткого мягким - понятно: один элемент If_else у котого верхняя точка запараллелена с Close

3) А сделать из мягкого жестким - это еще та история... Для аттачей типа TrayIcon - вообще невозможно было закрыть через WM_CLOSE
карма: 9

0
2
Сообщение
...
Прикрепленные файлы
(файлы не залиты)