Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать, есть ли обработчик события у компонента? [D5, WinXP]


SerKom ©   (2005-03-10 06:12:00) 

Как узнать, есть ли обработчик события у компонента? Например, есть у кнопки Button1 обработчик события ОnClick, что-то типа
if Button1.OnClick(Button1)<>nil then
 Button1.OnClick(Button1);


SerKom   (2005-03-10 12:13:00) [1]

2Sandman25
Спасибо!


Sandman25   (2005-03-10 11:53:00) [2]

При использовании Assigned не приходится вспоминать, нужен ли @


SerKom   (2005-03-10 11:46:00) [3]

Спасибо Юрию Зотову!
Я ошибки при отсутствии обработчика и хотел избежать.


KSergey   (2005-03-10 09:47:00) [4]

> [2] Юрий Зотов ©   (10.03.05 07:33)
> Ну, положим, приведенный код не проверяет, а дважды вызывает
> обработчик и если он не назначен,

Ой, мне стыдно... каюсь...


Юрий Зотов   (2005-03-10 07:33:00) [5]

Ну, положим, приведенный код не проверяет, а дважды вызывает обработчик и если он не назначен, получим ошибку.

То же самое, но безопасно можно сделать так: вызывать метод диспетчеризации события (если он есть). В данном случае - просто Button1.Click. В этом методе компонент сам проверит, есть ли обработчик и если есть, то сам же его и вызовет.

А если метода диспетчеризации не предусмотрено, то проверить можно так:
if @Button1.OnClick <> nil then...
или через RTTI:
if GetMethodProp(Button1, 'OnClick').Code <> nil then...


KSergey   (2005-03-10 07:08:00) [6]

Ну, так и узнавать
А в чем вопрос тогда?

(можно только узнать назначен ли он. приведенный код это как раз и делает)


Наверх

Титульная страница Поиск, карта сайта Написать письмо