Удаление контрола в обработчике
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 25.04.05 13:18
Оценка:
Привет всем.

Используется BCB5.

Как корректно удалять элемент управления во время обработки его события?

Меня терзают смутные воспоминания — давным давно я пару раз читал, что так делать нельзя, но хоть убей не помню, как же тогда можно И самое обидное никакой информации по этому поводу найти не получается
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: Удаление контрола в обработчике
От: Dimonka Верблюд  
Дата: 25.04.05 13:22
Оценка: 1 (1)
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Привет всем.


КД>Используется BCB5.


КД>Как корректно удалять элемент управления во время обработки его события?


КД>Меня терзают смутные воспоминания — давным давно я пару раз читал, что так делать нельзя, но хоть убей не помню, как же тогда можно И самое обидное никакой информации по этому поводу найти не получается


Максимум, что можно сделать в обработчике — это либо как-то пометить контрол (на удаление мол), либо послать PostMessage форме или владельцу контрола с запросом на уничтожение.
Re: Удаление контрола в обработчике
От: Softwarer http://softwarer.ru
Дата: 25.04.05 13:22
Оценка: 1 (1)
Здравствуйте, Коваленко Дмитрий, Вы писали:

Если говорить о произвольном контроле, то единственно корректный вариант — убрать его (сделать невидимым итп) и запомнить команду "удалить его, как только будет возможность".
Re: Удаление контрола в обработчике
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 25.04.05 13:54
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Как корректно удалять элемент управления во время обработки его события?


Господа, я поражен скоростью ответов Вообщем я уже понял, что в общем случае — никак.

Я нашел что меня спасет — CM_RELEASE. У меня контрол — это другая форма. Вызываем метод TCustomForm.Release, который пошлет самой форме CM_RELEASE. А обработчик этого сообщения — CMRelease форму грохнет.

Вот. Всем спасибо
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[2]: Удаление контрола в обработчике
От: Softwarer http://softwarer.ru
Дата: 25.04.05 13:57
Оценка: 6 (2)
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Я нашел что меня спасет — CM_RELEASE.


В этом случае Вам придется гарантировать, что до выхода из обработчика события никогда и ни при каких обстоятельствах не будет вызван Application.ProcessMessages или что-нибудь аналогичное.

http://softwarer.ru/memory.html#OtherVCL1
Re[3]: Удаление контрола в обработчике
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 25.04.05 16:18
Оценка:
Здравствуйте, Softwarer, Вы писали:

КД>>Я нашел что меня спасет — CM_RELEASE.


S>В этом случае Вам придется гарантировать, что до выхода из обработчика события никогда и ни при каких обстоятельствах не будет вызван Application.ProcessMessages или что-нибудь аналогичное.


По нашей жизни ничего нельзя гарантировать... (тут я задумался) ... Мда, как хрупок наш мир
Спасибо, приму на заметку.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.