Показать сообщение отдельно
Старый 29.08.2018, 15:58   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,658 / 1162 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от YoungPadawan Посмотреть сообщение
Здравствуйте!
Есть форма с деревом(Tree). Функционал работы дерева написан в методах дерева (на дизайне).
Хочу убрать код с дизайна.
Первое что приходит в голову: создать новый класс, передать в него контрол дерева, написать свои методы что бы соответствовать интерфейсу класса FormTreeControl и вызывать эти методы на том же дизайне в методах объекта Tree.
Это Best Practices в среде Axapta. Именно так все и делается.

Более того, у многих форм есть связанный с этой формой "обслуживающий" класс, который инициализируется в init-формы и методы этого класса вызываются из методов объектов формы. Именно с целью убрать код из методов формы в класс, который позже может стать классом-родителем

В Ax2012 факт наличия обслуживающего форму класса вообще стало не явным стандартом по причине изменений в дизайне и структуре данных.

Цитата:
Сообщение от YoungPadawan Посмотреть сообщение
Этот вариант рабочий, но меня смущает то что нужно будет все равно перекрывать методы Tree и писать в них вызов своих.
Так вот Axapta устроена. С этим ничего не поделаешь...

Цитата:
Сообщение от YoungPadawan Посмотреть сообщение
И, как я думал, это решается наследованием.

Была идея создать наследника от FormTreeControl и добавить его на форму в коде.
Или в методе new объекта Tree написать такое this = new МойНаследник, но не смог проверить работает ли вообще такая конструкция, потому что класс FormTreeControl имеет модификатор final. И все мои надежды на "красивый" код рухнули.
"Это не наш метод" (с)

В среде Axapta классы визуальных объектов "неприкосновенны". Не перекрываются. А программное создание объектов на форме - моветон. Хотя, конечно, и так тоже делают...

Цитата:
Сообщение от YoungPadawan Посмотреть сообщение
Так вот, всем кто дочитал, есть ли какие-то варианты избавиться от какого-либо кода на дизайне?
Стандарт для Axapta

Форма - только отображает, а весь код - в связанном с этой формой классе. Вызов методов класса явным образом из соответствующих методов формы

Т.е. совсем ничего не писать в методах формы - не получится Но можно свести весь код к командам вызова соответствующих методов
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: YoungPadawan (1).