| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Обработка событий в наследуемом компоненте |
| Автор: Dayana 26.12.2005, 12:27 | ||||
| Привет всем! 1000 лет не задавала, а также не отвечала на вопросы. Но вот вдруг созрело... пока задать... Давно не наследовала компоненты... стормозила по страшному.... а надо срочно... Наследую компонент, в частности от TwwDBGrid. Мне нужно, чтобы на событие OnColWidthChanged выполнялся мой код. Ну и понятно код пользователя код1
код 2 И в методе MyColWidthChanged пишу свой код и вызываю событие пользователя:
Вопрос: где можно перекрыть событие пользователя и заменить его своим? Т.е. выполнить код1. Если выполняю на Create, то здесь событие пользователя еще не видно. Т.е. на обработчике еще nil. А где тогда видно? Спасибо! |
| Автор: _hunter 26.12.2005, 12:31 |
| при наследовании перекрывают не On а Do. т.е. в нем выполняем свой код и делаем if Assigned(OnColWidthChanged) then OnColWidthChanged(...) -- вызов пользовательского обработчика |
| Автор: Dayana 26.12.2005, 12:49 |
| _hunter, все бы хорошо, но у данного события нет Do. Обработчик вызывается в MouseUp. Но если я перекрываю MouseUp, то плохо работает, в частности грид меняет высоту заголовка, короче глючит. Если посмотреть сорсы, то на самом деле обраотчик события вызывается в середине метода. А когда я перекрываю MouseUp, то свой код могу выполнить либо перед inherited, либо после. Т.е. не там, где на самом деле выполняется событие. Все хорошо работает, когда именно перекрываю событие. Добавлено @ 12:50 В любом случае, вопрос открытый, в какой момент события компонента получают свои обработчики, определенные пользователем? |
| Автор: _hunter 26.12.2005, 13:11 |
| значит нужно перекрывать MouseUp и перенести его код в свой класс... |
| Автор: Dayana 26.12.2005, 13:15 |
| _hunter, да, спасибо, похоже другого выхода нет... |