01.08.2012, 09:13 | #1 |
Мрачный тип
|
Переопределение стандартных методов у динамически создаваемых контролов - вопрос с предисторией (многабукаф)
Занимаюсь сейчас одной разработкой, а именно классом-движком отрисовки и обработки событий для табличного поля с EDT-массивом и имеющего сложные правила выбора значений в него. Поле это предполагается использовать в широком ряде таблиц и, соответственно, чего не хочется делать - так это программировать лукапы и корежить дизайны в куче форм, что собственно и послужило идеей создания такого класса.
Этот мой класс получает родительский контрол на форме и создает на нем динамическую группу контролов и является дополнительным обработчиком событий контролов для формы. У динамически создаваемых контролов мы можем переопределять их методы путем написания на обработчике (им может быть сама форма или некий отдельный класс) соответствующих методов, чьи имена являются композициями имени контрола и имени переопределяемого метода. Все хорошо и замечательно, lookup'ы перехватываются и отрабатываются. Для EDT-массива из 8 уровней пришлось переопределять 8 lookup'ов. Собственно вот эти 8 методов и не дают покоя ввиду личного перфекционизма - lookup'ы обрабатываются одним и тем же отдельным обработчиком, вызовы которого в переопределенных методах (да и сами методы) на классе-движке отрисовки отличаются только индексом внутри массива - все остальное идентично, т.е. по сути эти 8 штук методов легко заменяемы на один метод с параметром. Собственно отсюда и растут ноги вопроса - можно ли как-то, не имея переопределенных по вышеупомянутым правилам методов на обработчике, тем не менее отловить на родительской форме срабатывание события (конкретно, вызова lookup) от динамически созданного контрола и идентифицировать контрол (а через него и до индекса в EDT-массиве рукой подать), породивший это событие ? Форма внутри у себя в любом случае получает запрос на обработку события на контроле ...
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|