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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.04.2019, 08:48   #1  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
819 / 330 (13) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Пара вопросов по grid в 2009-й
Коллеги, помогите разобраться с парой моментов по subj'у:
  • свойство ActiveBackColor вообще работает или нет? Изменение его в AOT, build- и run-time через метод activeBackColor() результата не дают (цветовые схемы Default и WindowsPalette) - цвет выделения позиции один и тот же.
  • можно ли программно сымитировать поведение грида при маркировке одной позиции, когда все контролы грида в строке текущей позиции выделяются тонкой пунктирной рамкой ? (markRecord() у источника данных ставит отметку на кнопке строки, но рамку выделения не формирует)
__________________
Axapta will die, MorphX stay forever
Старый 10.04.2019, 12:04   #2  
БАХ43 is offline
БАХ43
Участник
 
58 / 54 (2) ++++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Перекрывай метод displayOption на источнике. Пример:

X++:
public void displayOption(WMSShipment _wmsShipment, FormRowDisplayOption _options)
{
    ;
    if (_wmsShipment.status == WMSShipmentStatus::Activated)
    {
        _options.backColor(WinApi::RGB2int(255,0,0));
    }

    super(_wmsShipment, _options);
}
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Старый 10.04.2019, 12:44   #3  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
819 / 330 (13) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от БАХ43 Посмотреть сообщение
Перекрывай метод displayOption на источнике
Не подходит для решения моей задачи.

Я пытаюсь победить старинную багофичу интерфейса 2009-й, когда в на форме с несколькими гридами все гриды (активный и неактивные) имеют идентичный цвет выделения текущей позиции и бес его разберет, в каком гриде находится курсор.
Решается это обычно двумя способами :
1) приходится всматриваться в каждый в целях поиска в подсвеченной строке либо контрола без цветовой пометки (фокус на контроле, который можно редактировать), либо контрола с тонкой пунктирной рамкой (фокус на readonly контроле)
2) тыкать мышом для уверенности в нужный грид

Оба два варианта - потеря времени и порядком уже такая ситуация задрала.

Без допиливания каждой формы отлавливать смену активного грида можно без проблем - info.formNotify() и доступный там экземпляр SysSetupFormRun дают прилично пространства для глобальных игрищ.

Однако, на финальном шаге , когда на 100% достоверно получена информация о том, какой grid/datasource на произвольной форме в отловленный момент перехода с одного на другой является активным, а какой - нет, варианты исполнения задуманного не работают. Смена цвета выделения позиции не работает, маркировка записи программно на неактивном гриде при отключенном подсвечивании активной позиции - визуально не дает того же эффекта, что ручная маркировка (на втором вложении - результат того, когда в верхнем гриде выделил одну строку и перешел в нижний грид) .
Миниатюры
Нажмите на изображение для увеличения
Название: Grid есть.jpg
Просмотров: 40
Размер:	175.7 Кб
ID:	12269   Нажмите на изображение для увеличения
Название: Grid надо.jpg
Просмотров: 46
Размер:	164.0 Кб
ID:	12270  

__________________
Axapta will die, MorphX stay forever

Последний раз редактировалось TasmanianDevil; 10.04.2019 в 12:51.
Старый 10.04.2019, 13:34   #4  
DmitryK is offline
DmitryK
Участник
 
176 / 76 (3) ++++
Регистрация: 22.12.2011
А если отслеживать изменение фокуса на контролах гида?
Старый 10.04.2019, 13:52   #5  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
819 / 330 (13) ++++++
Регистрация: 24.01.2005
Адрес: Томск
DmitryK, его, во- первых, глобально не отловишь и не получится в одном месте для любой произвольной формы использовать, а во-вторых - что оно даст ?
__________________
Axapta will die, MorphX stay forever
Старый 10.04.2019, 14:10   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,173 / 1923 (71) ++++++++
Регистрация: 12.10.2004
Записей в блоге: 1
Пытался решать похожую задачку
Проблема с интерфейсом в Windows 2012 R2 и Ax2012

правда до конца не довел.

Но может вам идея подойдет.
Старый 10.04.2019, 14:16   #7  
DmitryK is offline
DmitryK
Участник
 
176 / 76 (3) ++++
Регистрация: 22.12.2011
глобальная переменная формы для каждого грида, меняется он назначения сброса фокуса каждого его контрола (как-то раньше это не вызывало проблем, работало). На самом гриде (рядом) отображать / гасить иконку отображающую, что фокус на его элементах. Такое решение для каждой конкретной формы, но сделать что-то на уровне ядра вам вряд ли удастся (мне так кажется).
Старый 10.04.2019, 14:35   #8  
БАХ43 is offline
БАХ43
Участник
 
58 / 54 (2) ++++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
У меня получилось. Так надо было?
Миниатюры
Нажмите на изображение для увеличения
Название: Активен Заголовок.jpg
Просмотров: 56
Размер:	298.7 Кб
ID:	12271   Нажмите на изображение для увеличения
Название: Активна Строка.jpg
Просмотров: 58
Размер:	297.8 Кб
ID:	12272  

__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
За это сообщение автора поблагодарили: DmitryK (2), TasmanianDevil (2).
Старый 10.04.2019, 18:28   #9  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
819 / 330 (13) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от БАХ43 Посмотреть сообщение
Так надо было?
Оно самое. Чем меняли цвет ? Используемая цветовая схема ? Использовались ли допонительные методы обновления/перерисовки грида/формы ?
__________________
Axapta will die, MorphX stay forever

Последний раз редактировалось TasmanianDevil; 10.04.2019 в 18:32.
Старый 10.04.2019, 20:46   #10  
БАХ43 is offline
БАХ43
Участник
 
58 / 54 (2) ++++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Я перекрыл методы Enter на гридах - заголовке и строках.
Для SalesLineGrid
X++:
public void enter()
{
    SalesLineGrid.activeBackColor(WindowsPalette::HighlightBackground);
    GridHeader.activeBackColor(WindowsPalette::InactiveTitleBar);
    super();
}
Для GridHeader
X++:
public void enter()
{
    SalesLineGrid.activeBackColor(WindowsPalette::InactiveTitleBar);
    GridHeader.activeBackColor(WindowsPalette::HighlightBackground);
    super();
}
Это при условии, что в свойствах этих гридов ColorScheme = default или Windows Palette. При схеме RGB, видимо, в аргументах надо будет выбирать WinApi::RGB2int и соотношение красного зеленого голубого.
Можно было перекрыть метод получения (или потери) фокуса. Но он сработает только, если нажал в гриде на поле, разрешенное к редактированию.
Субъективно - показалось, что форма стала сильно тормозить. Но, возможно, что это просто тестовая база, у которой мало оперативки для кэша.
ЗЫ: Дочитал вопрос - ничего дополнительного для прорисовки не использовал.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!

Последний раз редактировалось БАХ43; 10.04.2019 в 20:53.
Старый 11.04.2019, 12:01   #11  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
819 / 330 (13) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Все тоже самое делаю.
Хоть конкретно на форме, хоть через свой механизм отлова в run-time grid'а, принадлежащего источнику данных активной записи при событии RecordChange в info.formNotify() - результат смены цвета выделенной позиции идентичен предыдущему, т.е. никакой.
Цветовая схема grid и самого дизайна формы - Default
Ни компе стандартная тема Windows 7 с единственным изменением - однотонный цвет рабочего стола.

Где-то завелся мелкий шайтанчик ...
__________________
Axapta will die, MorphX stay forever
Старый 11.04.2019, 12:03   #12  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,173 / 1923 (71) ++++++++
Регистрация: 12.10.2004
Записей в блоге: 1
Аксапта локально стоит ?
Если используется терминальный сервер, то проверьте тему рабочего стола на терминальнике.
Старый 11.04.2019, 12:09   #13  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
819 / 330 (13) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от Logger Посмотреть сообщение
Аксапта локально стоит ?
Да, обычный локальный виндовский клиент - никакого терминала.

P.S. во вложении - видео с экрана, поменяйте только расширение на mp4, иначе было не залить
Вложения
Тип файла: rar 2019-04-11 at 16-14-13.rar (2.24 Мб, 48 просмотров)
__________________
Axapta will die, MorphX stay forever

Последний раз редактировалось TasmanianDevil; 11.04.2019 в 12:20.
Старый 11.04.2019, 19:26   #14  
БАХ43 is offline
БАХ43
Участник
 
58 / 54 (2) ++++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Попробуй поиграть с ColorScheme = RGB и классом WinApi::RGB2int. И в клиент перезаходи - дизайн формы закеширован может быть.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Старый 11.04.2019, 23:57   #15  
БАХ43 is offline
БАХ43
Участник
 
58 / 54 (2) ++++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Еще одна мысля появилась. На табах, группах и все что выше по иерархии попробуй автодекларейшен в йес поставить... хз, у меня так стоит..
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Старый 12.04.2019, 00:08   #16  
БАХ43 is offline
БАХ43
Участник
 
58 / 54 (2) ++++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Аяй. Вот прикол. Ща запустил клиента на 7-ке, тоже нет изменений в цвете.
Работает у меня оказывается только на Винсервер 2008
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Старый 12.04.2019, 07:07   #17  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,173 / 1923 (71) ++++++++
Регистрация: 12.10.2004
Записей в блоге: 1
А если классическую тему поставить?
Старый 12.04.2019, 10:06   #18  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
819 / 330 (13) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от Logger Посмотреть сообщение
классическую тему
Так она и стоит.
__________________
Axapta will die, MorphX stay forever
Старый 12.04.2019, 11:44   #19  
БАХ43 is offline
БАХ43
Участник
 
58 / 54 (2) ++++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Копай настройки Винды. В таком варианте activeBackColor работает
Изображения
 
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
За это сообщение автора поблагодарили: Logger (3).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11
semanticax: Dynamics AX 2009 Installation - Application Blog bot DAX Blogs 0 22.12.2010 08:11
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
palleagermark: EP 2009: Edit a record outside a grid Blog bot DAX Blogs 0 05.11.2008 11:05
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:03.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.