Galkov писал(а):
рано или поздно крякнетТы изменил данные о родительстве через winApi. Данные в контролах об этом ничего не знают - они имеют у себя другое дерево взаимоподчиненности.
Которое используют при уничтожении. Вполне возможно, что при каком-то стечении обстоятельств виндячий объект пытается уничтожиться дважды: сначала его винда уничтожила как реального детишку при уничтожении родителя, а потом KOL, пытаясь уничтожить контрол.
Как в реальности, и в какой последовательности это происходит, исследовать - настроения аж никакого.
Просто не надо дурить самого себя, не придется заниматься героическим преодолением трудностей.
Это философия такая: никогда не планируй себе трудностей "на потом". "На потом" их будет и без твоего планирования - выше крыши.
Реально, вместо winApi надо делать TControl.SetParent. Но даже при этом возможны проблемы: если конструктор контрола приаттачил обработчик своих нотификаций к паренту. Панели такого, правда, не делают...
А код с исключениями выполняется-то всегда. У компилятора, любимое занятие - это устроить try-finally блок при использовании "своих" динамических объектов (string) в качестве локальных переменных. Не зависимо от подключения err.pas
Мне просто думается, что err.pas просто малёхо изменил какие-то системные обработчики
Стал ходить чуть-чуть по другому - бомба и взорвалась.
А заложил-то ее - ты