![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическое создание объекотв и методы [D4, D5, D6]
AlexanderSK © (2002-04-05 14:34:00)Проблемма следующая: в run-time создаем объект (например TLabel), далее происходит какое-либо событие, инициируемое этим объектом (например OnClick), в обработчике этого события нужно удалить экземпляр его вызвавший! Совершенно понятно, что после завершения выпонения этого обработчика, происходит ошибка выполнения (возвращаьтся то не куда - объект уже удален)! Можно ли и если можно то как этого избежать?
Fantasist (2002-04-05 19:28:00) [1]DestroyWindow(Button1.Handle);
Для TLabel, конечно, не подойдет, но можно использовать TStatciText
Digitman (2002-04-05 14:58:00) [2]>MBo
SendMessage() не пойдет.
Digitman (2002-04-05 14:56:00) [3]В обработчике события объекта посылай форме некое предопределенное тобой сообщение вызовом PostMessage(). В форме определи обработчик этого сообщения и в его теле вызывай деструктор объекта-инициатора
MBo (2002-04-05 14:53:00) [4]можно - определяем сообщение, например,
const WM_DELLabel=WM_USER+100;
делаем метод
procedure WMWM_DELLabel(var Msg:TMessage);message WM_DELLabel;
а из обработчика посылаем
sendmessage(handle,WM_DELLabel,0,0);
если надо различать, что уничтожать, передаешь информацию, например, Tag нужной label, через wparam