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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.05.2010, 14:23   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Любопытная задачка. Решить, наверное, можно примерно так:

1. В ClassDeclaration формы объявляем переменную типа str и будем хранить в ней имя последнего активного контрола грида (lastGridActiveControlName)
2. В эту переменную будем писать из некоторых событий всех контролов, соответствующих колонкам грида.
3. В процедуре clicked кнопки будем считывать значение lastGridActiveControlName.

Подробнее о шаге 2. Событий предлагается два: enter() и mouseEnter(). Оператор сохранения lastGridActiveControlName = element.selectedControl().name(); в методах событий вставляем после super(). Итого надо будет прописать это присваивание в [кол-во колонок грида х 2] мест.

Я потестировался на гриде формы "Основные средства" (RAssetTable) при помощи такого фрагмента, вставляемого после super() - например, для контрола Name:
X++:
public void enter()
{
    super();

    if (element.selectedControl())
        infolog.writeCustomStatlineItem(element.selectedControl().name());
}
Оператор infolog.writeCustomStatlineItem(...) как бы имитирует сохранение имени, "сохраняя" его в "Поле настраиваемой подсказки"( Как вывести строку в StatusBar?). Перед выполнением необходимо включить вывод в это "поле" в Сервис \ Параметры \ Строка состояния \ флажок "Поле настраиваемой подсказки".

Прописав такой оператор в enter() и mouseEnter() всех колонок грида, можно потом щелкать по различным колонкам и наблюдать как меняется значение в "Поле настраиваемой подсказки".

Имеется осложнение в виде ComboBox'а на enum'е (колонка "Статус"). Имя этого контрола возникает в "Поле настраиваемой подсказки" только при входе в него по клавише Tab из соседнего контрола слева (или по Shift+Tab справа). Произвольный первый клик мышью на "Статусе" не срабатывает. Срабатывает только второй, когда раскрывается выпадающий список.

Но если в гриде нет ComboBox'ов, либо события от них в конкретном случае не интересны и легко игнорируемы, то всё остальное вполне прилично отрабатывает. Правда, придется немножко понапрягаться с прописыванием в события.

P.S. Кстати говоря, системная подсказка в StatusBar'е, которая внизу слева, ведет себя абсолютно так же, как наша. Кликнем вначале колонку "Инв.номер ОС" - получаем подчказку "Основное средство" внизу слева и наше "AssetNum" внизу справа. Далее один раз кликаем "Статус" - ничего не меняется. И только второй клик (в той же ячейке грида!) отображает "Статус основного средства" слева и "AssetTable_Status" справа. Так что с ComboBox'ом - это общая клиническая картина.

Последний раз редактировалось Gustav; 17.05.2010 в 14:51.
За это сообщение автора поблагодарили: alex55 (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: WCF: The Enterprise Service Bus for Dynamics AX and the rest of the Microsoft Stack Blog bot DAX Blogs 0 10.03.2009 16:05
Как AX определяет, какой профиль безопасности использовать? Razbezhkin DAX: Администрирование 1 23.10.2007 13:02
Inside Dynamics AX 4.0: Usage Scenarios Blog bot DAX Blogs 0 04.10.2007 05:15
Inside Dynamics AX 4.0: Inside the Business Connector Blog bot DAX Blogs 0 04.10.2007 05:15
какой метод выполняется на форме... lev DAX: Программирование 8 02.10.2007 16:29

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

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

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