Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Определение наличие события


Автор: SpaceIQ 2.7.2009, 16:47
Приветствую!

У меня есть класс для валидации введенных пользователем данных. В один из методов класса происходит передача виджета как TWidgetControl и некоторых параметров, отвечающих за его валидацию.

Я выполняю runtime валидацию, то есть, сразу после окончания ввода происходит валидация данных. Для этого необходимо переопределение события OnChange. Я его переопределяю, но как это делается сейчас, мне не нравится.

Дело в том, что я вначале определяю класс виджета, а потом устанавливаю OnChange, то есть:

Код

if MyWidget is TEdit then
  TEdit( MyWidget ).OnChange := MyChecker;


Но есть еще и TComboBox, TListBox и т.д. + мои собственные виджеты. Мне приходиться перечислять их все, а так же ссылать на них в секции Uses.

Вопрос такой: можно ли определить у виджета наличие события без приведения к типу и установить? Ну или как-то сделать, чтобы не приходилось перечислять все виджеты, которые  только могут быть?

Автор: Rennigth 2.7.2009, 17:19
SpaceIQ, с помощью методов из TypInfo можно сделать. Я когда-то делал подобное(перехватывал все события OnChage на форме), но что-то исходник найти не могу :( может завтра... 

Автор: MetalFan 3.7.2009, 12:06
GetPropInfo + SetMethodProp из TypInfo я думаю помогут

Автор: SpaceIQ 4.7.2009, 15:21
Да, именно так все сделал. Не знал, что есть такой модуль. Спасибо!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)