Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];




Вниз

Динамическое создание объекотв и методы 


AlexanderSK   (2002-04-05 14:34) [0]

Проблемма следующая: в run-time создаем объект (например TLabel), далее происходит какое-либо событие, инициируемое этим объектом (например OnClick), в обработчике этого события нужно удалить экземпляр его вызвавший! Совершенно понятно, что после завершения выпонения этого обработчика, происходит ошибка выполнения (возвращаьтся то не куда - объект уже удален)! Можно ли и если можно то как этого избежать?



MBo   (2002-04-05 14:53) [1]

можно - определяем сообщение, например,
const WM_DELLabel=WM_USER+100;
делаем метод

procedure WMWM_DELLabel(var Msg:TMessage);message WM_DELLabel;

а из обработчика посылаем
sendmessage(handle,WM_DELLabel,0,0);
если надо различать, что уничтожать, передаешь информацию, например, Tag нужной label, через wparam



Digitman   (2002-04-05 14:56) [2]

В обработчике события объекта посылай форме некое предопределенное тобой сообщение вызовом PostMessage(). В форме определи обработчик этого сообщения и в его теле вызывай деструктор объекта-инициатора



Digitman   (2002-04-05 14:58) [3]

>MBo
SendMessage() не пойдет.



Fantasist   (2002-04-05 19:28) [4]

DestroyWindow(Button1.Handle);
Для TLabel, конечно, не подойдет, но можно использовать TStatciText




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.03 c
1-57785           Sergey_R              2002-04-05 18:36  2002.04.18  
Нетрадиционный вопрос!


1-57790           dimonf                2002-04-06 14:32  2002.04.18  
Народ, подскажите какой программой сделана kuliba.chm?


1-57749           vadim2                2002-04-05 11:24  2002.04.18  
а как узнать что drag&drop успешно выполнилось? например:


1-57764           lipskiy               2002-04-03 21:34  2002.04.18  
Когда правильно делать FreeAndNil, а когда просто Free?


1-57703           B_A_V                 2002-04-08 10:29  2002.04.18  
select c выборкой по последней дате, которая < введенной даты