19.01.2012, 15:46 | #1 |
Участник
|
Как программно "выделить" объект AOT? Или про глюки на открытии формы поиска
Ядро AX 2009 SP1 RU7. Есть вспомогательная формочка для поиска и открытия проектов, которая представляет их в табличном виде (через UtilElements) с фильтрацией и проч. и открывает по щелчку на нужном проекте в grid'е посредством вызова TreeNode.AOTrun(). После открытия проекта у меня лично часто возникает потребность что-нить поискать в методах объектов, которые в нем собраны, я жму Ctrl-F, открывается форма поиска (SysAotFind). Все бы хорошо, но вот засада: в ней initialTopNode (определяющий "Искать в" - откуда начинать поиск) указывает вовсе не на проект, а на другой объект АОТ, на котором до открытия формы поиска был "фокус". В моем случае это зачастую вообще почему-то оказывается пункт меню в "Избранном" (\Options\Menus\User Menus\Избранное\Название вспомогательной формочки поиска проектов).
Щелкать каждый раз по только что открытому окну проекта и потом опять по форме поиска, чтобы она "поняла", где надо искать, очень муторно и тяжко. В то же время если открывать проект "штатно" из окошка Projects, то с поиском все в порядке. Отладчик показал, что в описанной выше ситуации форма поиска берет данные из экземпляра класса LastAotSelection, а тот, видимо, совершенно не интересуется, что я только что дернул на каком-то TreeNode'е метод AOTrun(). Отсюда вопрос: как бы вот так... сэмулировать выбор проекта в AOT, чтобы LastAotSelection возвращал именно его? Теоретически еще остается извратный вариант найти предыдущее активное окно, дочернее по отношению к инфологу, получить его заголовок, проверить заголовок на соответствие шаблону "Проект %1", найти TreeNode для соотв. проекта и подпихнуть его в initialTopNode формы поиска, но этот вариант хотелось бы оставить в качестве "плана Б". |
|