![]() |
#2 |
Участник
|
Цитата:
И как хорошо вас понимаю... Цитата:
Сообщение от Sergey Batiskaf
![]() Значит вопрос первый думаю стандартный, документация по классам, в нете практически ничего нет, как с этим всем разбираться? Вот хочу я создать инстанс другой формы из метода моего класса, нужно использовать ClassFactory::fromRunClassOnClient? Или что то другое? Как заполнить Args, в каком формате это принято делать? Все это можно понять только при наличии документации.
Ищите по крохам. Например, как здесь Описание скрытых объектов или по ссылкам http://axapta.mazzy.ru/links или тренингах или в книжках. Почему такая ситуация? Дело в том, что разработчики болели идеей самодокументируемого кода. Вы постоянно будете натыкаться на зачатки инструментов анализа кода... Самый импользуемый - перекрестные ссылки http://axapta.mazzy.ru/lib/xref/ http://axapta.mazzy.ru/lib/explore/ http://axapta.mazzy.ru/lib/explorepricelist/ а также Visual MorphXplorer (он показан здесь http://axapta.mazzy.ru/lib/querytuning/ ) Есть и другие инструменты, но они почти бесполезны... Поскольку в какой-то момент объем кода стал настолько большим и взаимосвязей настолько много, что без документации понять принципы работы системы невозможно. Ваши вопросы именно по принципам работы. Совет: начните с tutorial-объектов, проштудируйте их. http://axapta.mazzy.ru/lib/gettingstarted/ Посмотрите тажке сюда http://erpkb.com/Axapta/Programmirovanie?v=1c65 Цитата:
Сообщение от Sergey Batiskaf
![]() СОМ взаимодействие. Из примеров более менее ясно как построить ссылку на объект. Меня интересует как в Х++ собрать класс, который я смогу передать в методы СОМ объекта в качестве аргумента, и из СОМ-а уже вызывать эти методы Аксапта обьекта? Где то прочитал что можно унаследоваться от класса СОМ и получится как бы то что нужно. Можно подробности, какие методы, кроме наследования, нужно перекрыть, как имплементировать тот или инной интерфейс, который определен в АктивХ ТЛБ, какой тип интерфейса возможно имплементировать - дюал или только диспинтерфейс для позднего связывания?
Проштудируйте классы семейтва ax*. Эти классы предназначены именно для обращения извне. Цитата:
Сообщение от Sergey Batiskaf
![]() Язык видимо джавоидный, значит должна быть рефлексия, как ей воспользоваться для исследования типов в рантайме, для имплементации позднего связывания и вызовов методов посредством рефлексии? Помнится в СмолТоке можно было получить все инстансы конкретного класса, которые были построены сейчас, как с этим обстоят дела в Х++?
![]() Изучите семейство системных классов Dict* Для работы в рантайме инструментов мало. Функции typеof, dimof, некоторые методы в классе Global и также некоторые статитические методы в классах семейства Dict* Цитата:
Сообщение от Sergey Batiskaf
![]() Подписка на GUI controls Events. Судя по тому что я вижу, можно перекрыть метод и обрабатывать таким образом сообщение. Как реализовать множественного наблюдателя, как в Джаве или .Нет, котгда есть возможность засунуть список листнеров\делегатов на одно событие, чтобы можно было это проделать в рантайме, не перекрывая заранее методы в дизайн тайме.
Нет, такого нет. Цитата:
Сообщение от Sergey Batiskaf
![]() Если предыдущий пункт не получается проделать, тогда выхода нет и прийдется править классы контролов (кнопок, списков, таблиц), встраивать тот когд, который мне необходим туда. Принято ли это делать, и можно ли вообще поменять имплементацию классов стандартной библиотеки (опять же в СмолТоке это делалось), к примеру я хочу дописать пару строк в ClassFactory::fromRunClassOnClient, или в Button.clicked
Да, можно, но осторожно. Прочитайте главу "Design guidelines for cost-efficient upgrades" в Best Practice. Цитата:
Сообщение от Sergey Batiskaf
![]() Если и этого нельзя сделать, тогда может есть какие то метасредства? В некоторых версиях Смолтока можно было добавлять пре и пост кондишнс на конкретные методы, для меня это как раз, например к методу Button.clicked в пост кондишн добавить пару моих строк кода, который будет вызываться с теми же аргументами что и обработчик сообщения. (Такой метод был бы предпочтительнее чем менять библиотечные классы, которые с новыми петчами могут тоже поменяться и вся моя писанина уйдет коту под хвост).
Метасредства есть. Но их бездумное использование приводит к очень большому объему программирования. Прежде всего вам придется очень внимательно перехватывать код, относящийся к безопасности, включению/выключению функционала, автосвязыванию форм и датасорсов... Кроме того, стандартный уже существующий функционал, за редким исключением, практически не использует метасредств. Поэтому ваши вставки будут выглядеть инородным телом. В общем, на первых порах, лучше не используйте метасредства. Изучите аспекты поведения ядра. Тогда вам перехватывать события будет намного легче. Цитата:
![]() См. генератор отчетов, генератор классов, а также скрипты в редакторе... Но будьте осторожны. Аксапта хороша не как инструмент программирования. А как готовая бизнес-логика с возможностью быстрой и удобной доработки. Если ваша "доработка" становится более дорогой, нежели создание новой программы в Delphi, VS или в другой инструментальной среде... То использование Аксапты теряет всяческий смысл. Вопрос не в можно/нельзя. Вопрос в рационально/нерационально. ![]() См. также проекты по самомодификации Аксапты http://www.axforum.info/forums/showthread.php?t=7788 http://www.axforum.info/forums/showthread.php?t=13282 http://www.axforum.info/forums/showthread.php?t=11701 |
|