?????????????????? Непонятки
Вопрос следующий: написал свой компонет в runtime режиме его оттестировал,
всо нормально все работает, но как только я сделал bpl и начал работать в
designtime режиме то тут всякие странностьи поползли:
стоит мне к примеру с помощью клавиши del удалить свой компонент, то
вылетают всякие ошибки, типа не могу прочитать адрес памяти и все такое,
в своем компоненте я динамически создаю другие контролы, которые удаляю в
деструкторе! парент у низ мой компонент
в чем проблема почему позут ошибки??????
Код в студию, что-ли :)
Всем привет!
Вопрос следующий: написал свой компонет в runtime режиме его оттестировал,
всо нормально все работает, но как только я сделал bpl и начал работать в
designtime режиме то тут всякие странностьи поползли:
стоит мне к примеру с помощью клавиши del удалить свой компонент, то
вылетают всякие ошибки, типа не могу прочитать адрес памяти и все такое,
в своем компоненте я динамически создаю другие контролы, которые удаляю в
деструкторе! парент у низ мой компонент
в чем проблема почему позут ошибки??????
Если передал в конструктор динамически создаваемого контролла Owner(this), то в деструкторе его удалять не надо - это сделает владелец.
__fastcall TContainerPanel::TContainerPanel(Classes::TComponent* AOwner):TPanel(AOwner){
lv = new TListView(this);//владение объектом
lv->Parent = this; //владение окном
}
__fastcall TContainerPanel::~TContainerPanel()
{
//вначале его удаляет TContainerPanel...
delete lv;//а теперь Ты пробуешь, не надо...
}
в designtime режиме то тут всякие странностьи поползли:
стоит мне к примеру с помощью клавиши del удалить свой компонент, то вылетают всякие ошибки, типа не могу прочитать адрес памяти и все такое, в своем компоненте я динамически создаю другие контролы, которые удаляю в деструкторе!
Не знаю, применимо ли это к твоей задаче, но есть железное правило: если компонент прямо или косвенно содержит ссылки на другие компоненты, которые он не создавал и не должен освобождать, обязательно надо перекрыть метод Notification, чтобы отработать случай освобождения компонента по событию извне.
Не знаю, применимо ли это к твоей задаче, но есть железное правило: если компонент прямо или косвенно содержит ссылки на другие компоненты, которые он не создавал и не должен освобождать, обязательно надо перекрыть метод Notification, чтобы отработать случай освобождения компонента по событию извне.
Про Notification это ты верно заметил!