29.08.2018, 11:48 | #1 |
Участник
|
FormTreeControl, Tree наследование. АХ2009
Здравствуйте!
Есть форма с деревом(Tree). Функционал работы дерева написан в методах дерева (на дизайне). Хочу убрать код с дизайна. Первое что приходит в голову: создать новый класс, передать в него контрол дерева, написать свои методы что бы соответствовать интерфейсу класса FormTreeControl и вызывать эти методы на том же дизайне в методах объекта Tree. Этот вариант рабочий, но меня смущает то что нужно будет все равно перекрывать методы Tree и писать в них вызов своих. И, как я думал, это решается наследованием. Была идея создать наследника от FormTreeControl и добавить его на форму в коде. Или в методе new объекта Tree написать такое this = new МойНаследник, но не смог проверить работает ли вообще такая конструкция, потому что класс FormTreeControl имеет модификатор final. И все мои надежды на "красивый" код рухнули. Так вот, всем кто дочитал, есть ли какие-то варианты избавиться от какого-либо кода на дизайне? |
|
29.08.2018, 12:02 | #2 |
Участник
|
Стандартные формы изучали?
__________________
Ivanhoe as is.. |
|
29.08.2018, 12:23 | #3 |
Участник
|
Изучал.
В туториал - весь код в design ->Tree и в Element. В правах групп пользователей - то что я описал в первом сообщении сообщении (методы класса вызываются в перекрытых методах на дизайне). Последний раз редактировалось YoungPadawan; 29.08.2018 в 13:01. |
|
29.08.2018, 12:51 | #4 |
Участник
|
Я думаю фраза про стандартные формы подразумевала не только tutorial*, но в том числе и формы, в которых используется также контрол tree. К сожалению, доступа к ax2009 у меня нет сейчас, но в DAX2012 то, что вы хотите сделать, реализовано в формах RTax25ProfitTable, DimensionDefaultingLookup(этой формы в dax2009 нет, лукап форма фин. аналитик).
У себя поискать примеры вы всегда можете по перекрестным ссылкам, думаю найдете.
__________________
Sergey Nefedov Последний раз редактировалось SRF; 29.08.2018 в 12:53. |
|
29.08.2018, 15:58 | #5 |
Участник
|
Цитата:
Сообщение от YoungPadawan
Здравствуйте!
Есть форма с деревом(Tree). Функционал работы дерева написан в методах дерева (на дизайне). Хочу убрать код с дизайна. Первое что приходит в голову: создать новый класс, передать в него контрол дерева, написать свои методы что бы соответствовать интерфейсу класса FormTreeControl и вызывать эти методы на том же дизайне в методах объекта Tree. Более того, у многих форм есть связанный с этой формой "обслуживающий" класс, который инициализируется в init-формы и методы этого класса вызываются из методов объектов формы. Именно с целью убрать код из методов формы в класс, который позже может стать классом-родителем В Ax2012 факт наличия обслуживающего форму класса вообще стало не явным стандартом по причине изменений в дизайне и структуре данных. Цитата:
Цитата:
Сообщение от YoungPadawan
И, как я думал, это решается наследованием.
Была идея создать наследника от FormTreeControl и добавить его на форму в коде. Или в методе new объекта Tree написать такое this = new МойНаследник, но не смог проверить работает ли вообще такая конструкция, потому что класс FormTreeControl имеет модификатор final. И все мои надежды на "красивый" код рухнули. В среде Axapta классы визуальных объектов "неприкосновенны". Не перекрываются. А программное создание объектов на форме - моветон. Хотя, конечно, и так тоже делают... Цитата:
Форма - только отображает, а весь код - в связанном с этой формой классе. Вызов методов класса явным образом из соответствующих методов формы Т.е. совсем ничего не писать в методах формы - не получится Но можно свести весь код к командам вызова соответствующих методов
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: YoungPadawan (1). |
30.08.2018, 08:17 | #6 |
Мрачный тип
|
Цитата:
Мы у себя именно так и реализовали, дабы не повторять одно и то же по 17 иерархическим таблицам в 34 формах (на каждую по форме редактирования и lookup-форме).
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
|
За это сообщение автора поблагодарили: YoungPadawan (1). |
30.08.2018, 08:51 | #7 |
Участник
|
Спасибо за Ваши ответы)
|
|
30.08.2018, 10:23 | #8 |
Участник
|
Чтобы уж совсем все с нуля не писать, посмотрите класс CcFormTreeDatasource и его наследников - где и как используются.
|
|