![]() |
#1 |
Участник
|
![]()
Добрый день.
Подскажите, пожалуйста, как можно определить наличие кастомного метода на контроле формы? Т.е. есть некий контрол (FormStringControl), на создана функция isEnable. Этот контрол передается в какую-то еще функцию преобразовываясь в Object, где и вызывается isEnable. Очевидно, что данный способ взаимодействия небезопасный (на этапе компиляции ошибку не получить) и хочется как минимум валидировать наличие целевой функции. |
|
|
За это сообщение автора поблагодарили: Pandasama (2). |
![]() |
#2 |
Участник
|
Перенести эти методы на форму с контрола и проверять что форма является нужной вам формой?
|
|
![]() |
#3 |
Участник
|
Может попробовать получить TreeNode самого контрола (тапа как это в классе SysFormRun делает метод ctrlId2treeNodePath) а потом добавить к нему еще metods\Имя метода?
Ну и попробовать найти такой по аналогии с hasMethod того же SysFormRun . Никогда не пробовал, но может что-то сработает. |
|
|
За это сообщение автора поблагодарили: Товарищ ♂uatr (4). |
![]() |
#4 |
Участник
|
Спасибо.
В очередной раз поражаюсь "выкрутасам", которые необходимо осуществлять в Аксапте для, как казалось бы, получения простых результатов. Решение: X++: boolean test(FormControl _control, str _methodName) { ; return Form::formRunHasMethod(SysDictClass::as(_control, classNum(Object)), _methodName); } Последний раз редактировалось Товарищ ♂uatr; 28.12.2022 в 00:34. |
|
![]() |
#5 |
Участник
|
То есть передаем сам контрол в параметре, который ждет форму и Акса догадалась что нам нужно?
Интересные дела, главное "интуитивно". |
|