Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перехват события

4.7K
16 сентября 2004 года
kelz
42 / / 21.06.2004
Доброе Вам утро/день/полярный день/полярная ночь...
Вопрос таков: создается некий компонент, все равно какой, допустим TMyLabel, наследуемый от TLabel. В runtime этот компонент должен выполнять некие действия по событию допустим OnResize. Я делаю так: в конструкторе TMyLabel пишу OnResize = MyResizeHandler и все работает НО если в design-time пользователь определяет свой обработчик на это событие то нифига не работает. Билдер переопределяет обработчик уже после вызова конструктора, где я устанавливаю свой. Спрашивается как мне перехватить это событие, чем раньше после момента запуска, тем лучше? Естественно я сохраню адрес пользовательского обработчика и вызову его когда сделаю все свои дела. Не придется ли ловить виндовские сообщения типа WM_SIZE, да и не на все события бывают соответствующие сообщения.
Заранее благодарен
246
16 сентября 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by kelz
Доброе Вам утро/день/полярный день/полярная ночь...
Вопрос таков: создается некий компонент, все равно какой, допустим TMyLabel, наследуемый от TLabel. В runtime этот компонент должен выполнять некие действия по событию допустим OnResize. Я делаю так: в конструкторе TMyLabel пишу OnResize = MyResizeHandler и все работает НО если в design-time пользователь определяет свой обработчик на это событие то нифига не работает. Билдер переопределяет обработчик уже после вызова конструктора, где я устанавливаю свой. Спрашивается как мне перехватить это событие, чем раньше после момента запуска, тем лучше? Естественно я сохраню адрес пользовательского обработчика и вызову его когда сделаю все свои дела. Не придется ли ловить виндовские сообщения типа WM_SIZE, да и не на все события бывают соответствующие сообщения.
Заранее благодарен


Как сабклассировать контрол см. здесь
http://forum.codenet.ru/showthread.php?s=&threadid=18908
если, что не ясно пиши...

246
17 сентября 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by GIZMO

Как сабклассировать контрол см. здесь
http://forum.codenet.ru/showthread.php?s=&threadid=18908
если, что не ясно пиши...


Ну если в компоненте то лучше так:
class PACKAGE TMyLabel : public TLabel
{
protected:
void __fastcall WMSize(TWMSize* Message);

BEGIN_MESSAGE_MAP

MESSAGE_HANDLER(WM_SIZE, TWMSize, WMSize)
END_MESSAGE_MAP(TComponent)
};

void __fastcall TMyLabel::WMSize(TWMSize* Message)
{
kelzHandler();
TLabel::WMSize(Message);
}
См. bcbXcw.hlp->Содержание->HandlingMessages->Overriding a message handler

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог