Недавно занимался переносом приложения из Borland C++ Builder 6 (vcl version 6) в Borland Turbo C++ 2006 Professional (vcl version 10), и обнаружил весьма странную вещь: при уничтожении формы не происходит вызыв обработчика события OnHide.
Был весьма удивлён, и опечален данным фактом.
Дело в том, что и в BCB5, и в BCB6 этот обработчик спокойно вызывался перед уничтожением формы.
Непонятно, невызов — это баг или фича?
В Delphi vcl version 10 формы ведут себя аналогичным образом?
Прошу срочно вправить мне мозг!
Для заинтересовавшихся привожу логи и исходные тексты тестовых программ:
Исходнички тестовых приложений:
http://www.rsdn.ru/File/63344/MESSAGES_AND_FORMS.7z
Лог работы программы, собранной в BCB6:
http://www.rsdn.ru/File/63344/TEST_BCB6_WXPSP2.TXT
Лог работы программы, собранной в Turbo C++ 2006 Pro:
http://www.rsdn.ru/File/63344/TEST_TC2006_WXPSP2.TXT
Правила использования —
1) компилируем программу в соответствующей среде,
2) запускаем DbgView, или любимый отладчик, способный ловить отладочный вывод,
3) запускаем свежескомпилированную программу,
4) ждём несколько секунд, и закрываем окошко кнопой X,
5) смотрим лог.
А в исходники VCL заглянуть религия не позволяет? Посмотри, в каком методе в недрах VCL вызывался OnHide в старом VCL, а затем просмотри исходник этого метода в новой версии VCL. Или в турбо редакции нет исходников?
[EOF]
Был там, и видел место, в котором есть условие, не позволяющее вызывать OnHide.
Однако же, (Как бы это попроще выразить?

) — меня более волнует не "что" (конкретное условие; шестерёнка в механизме ), а "почему" или "зачем" (переставили, вывели из зацепления

), что за этим стоит в плане идеологии.
Я надеюсь, что найдутся люди, которые, задаваясь подобным вопросом, нашли какой-то свой ответ; имеют сложившееся мнение по сути,

услышать которое будет очень полезно.