Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизОшибка при удалении Panel с формы. Найти похожие ветки
← →
Object (2005-02-21 14:42) [0]Уважаемые мастера!
Пытаюсь удалять во run-time компоненты Panel по нажатию кнопки мыши так:
TPanel(Sender).Free;
Компоненты удаляются, но вначале выдаётся ошибка:
Abstract Error, или EAccess Violation.
Что это может быть?
Может по другому можно удалить?
Мне надо, чтобы полностью разрушился компонент.
Спасибо.
← →
Юрий Зотов © (2005-02-21 14:55) [1]Не нужно удалять компонент непосредственно из обработчика его же события. Вместо прямого удяления пошлите форме через PostMessage сообщение, например, WM_USER+200 и передайте ссылку на компонент в параметре. В обработчике сообщения и удаляйте этот компонент.
← →
DiamondShark © (2005-02-21 14:56) [2]А нельзя удалять компонент из обработчика его события.
← →
Чапаев © (2005-02-21 15:03) [3]Ещё один AV поймаешь при завершении работы программы, если Owner панельки был не nil...
← →
КаПиБаРа © (2005-02-21 15:27) [4]Чапаев © (21.02.05 15:03) [3]
Второй раз за день вы пишите это. Налицо неправильное представление о процессе удаления компонента.destructor TComponent.Destroy;
begin
Destroying;
if FFreeNotifies <> nil then
begin
while Assigned(FFreeNotifies) and (FFreeNotifies.Count > 0) do
TComponent(FFreeNotifies[FFreeNotifies.Count - 1]).Notification(Self, opRemove);
FreeAndNil(FFreeNotifies);
end;
DestroyComponents;
if FOwner <> nil then FOwner.RemoveComponent(Self);
inherited Destroy;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c