AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.06.2006, 19:25   #1  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Уж не знаю зачем Вам все это нужно. Может если расскажете зачем, то люди поскажут и как это реализовать.

Как уже говорилось - вставить свой код в методы системных классов нельзя. Заставить систему везде вместо инстансов FormButtonControl создавать инстансы MySuperButtonControl то же нельзя (подкрячивание exe-шников в качестве средства не рассматривается) Зато можно навесить хук на всю аксапту и обрабатывать в нем допустим все WM_CLICKED как заблагорассудится. Пишите dll c хуком например на VC++, загружаете ее и вперед с песней.

Только еще раз - а зачем все это?
Старый 07.06.2006, 19:31   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от db
Только еще раз - а зачем все это?
Ап-солютно согласен.
__________________
полезное на axForum, github, vk, coub.
Старый 08.06.2006, 13:18   #3  
batiskaf_new is offline
batiskaf_new
Участник
 
39 / 19 (1) ++
Регистрация: 07.06.2006
Цитата:
Сообщение от db
Уж не знаю зачем Вам все это нужно. Может если расскажете зачем, то люди поскажут и как это реализовать.

Как уже говорилось - вставить свой код в методы системных классов нельзя. Заставить систему везде вместо инстансов FormButtonControl создавать инстансы MySuperButtonControl то же нельзя (подкрячивание exe-шников в качестве средства не рассматривается) Зато можно навесить хук на всю аксапту и обрабатывать в нем допустим все WM_CLICKED как заблагорассудится. Пишите dll c хуком например на VC++, загружаете ее и вперед с песней.

Только еще раз - а зачем все это?
Я уже писал для чего:
http://forum.mazzy.ru/index.php?showtopic=5695#

Мне нужно интегрировать в ядро Аксапта агента, который будет мне давать следующие сервисы:

1. Программа максимум - уметь подключаться к высокоуровневым сообщениям Аксапта контролов. WM_CLICKED меня не совсем устраивает, потому что я бы хотел знать точно что сделал user гридом, выбрал ячейку, выбрал строку, поменял значение ячейки, все эти вещи можно получить из нотификаций класса FormGridControl.
2. Если первое не возможно, тогда программа минимум - получить доступ к DataStructure каждого конкретного контрола. Написать хук на низкоуровневые сообщения можно, но иметь доступ к структуре данных того же грида, по которому кликают в любом случае нужно. Другими словами, мне нужно будет взять HWND из системного сообщения, подключиться к Аксапте, получить каким то образом по этому window handle ссылку на объект, который имплементирует это окно, и получить инфекс ячейки, которая была выбрана пользователем, получить содержимое ячейки, итерировать строки, столбцы, вобщем манипулировать со структурой данных. Для этих целей я думал воспользоваться СОМ, потому что вся эта информация нужна в той утилите, которая это все будет записывать в скрипте, то есть в QTP .

Если первый вариант не возможен ( в чем я лично сомневаюсь), тогда давайте обсуждать дальше только второй сценарий (программа минимум). Как мне получить через рефлексию список всех объектов типа FormGridControl, которые были созданы в системе на данный момент, далее я обойду весь список, сравню window handle и найду тот контрол, по которому кликнул пользователь, и смогу выяснить все подробности об этом объекте (допустим что проблема интерпроцесс комуникации через СОМ у меня уже решена) Или может есть возможность у какого то глобального объекта в системе спросить список всех созданных форм, пройти весь список, обойти все child controls, и найти таким образом мой грид по хеэндлу.

P.S>
Кстати, если можно поменять имплементацию SysSetupFormRun, то почему нельзя классы контролов менять, не понял?

Последний раз редактировалось batiskaf_new; 08.06.2006 в 13:26.
Старый 08.06.2006, 13:52   #4  
lagr221374
Гость
 
n/a
Цитата:
Сообщение от batiskaf_new
1. Программа максимум - уметь подключаться к высокоуровневым сообщениям Аксапта контролов. WM_CLICKED меня не совсем устраивает, потому что я бы хотел знать точно что сделал user гридом, выбрал ячейку, выбрал строку, поменял значение ячейки, все эти вещи можно получить из нотификаций класса FormGridControl.
Хук + ActiveX ( для связи в Axapta) однозначно.
Старый 08.06.2006, 14:04   #5  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от batiskaf_new
Кстати, если можно поменять имплементацию SysSetupFormRun, то почему нельзя классы контролов менять, не понял?
В аксапте создание того, чью реализацию можно подменить проходит через класс xClassFactory. Формы, отчеты и кой че еще там есть. Контролов увы нет - потому и нельзя. Все претензии к братьям Даамгардам
За это сообщение автора поблагодарили: batiskaf_new (1).
Теги
crm2011

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX UK: Advanced Demand Management for AX 2009 workshops Blog bot DAX Blogs 0 28.03.2009 01:05
AX UK: Update on Advanced Demand Management for AX 2009 Blog bot DAX Blogs 0 26.03.2009 17:05
Solutions Monkey: WSS Setup for EP - Basic or Advanced Mode ? Blog bot DAX Blogs 0 23.08.2007 05:32
axaptabuilder: How to learn Axapta programming: “MorphXIT: an introduction to Axapta and the MorphX Development Suit” Blog bot DAX Blogs 0 28.10.2006 16:47
Advanced programming: Grid data and view manipulations batiskaf_new DAX: Программирование 15 21.06.2006 11:44

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:14.