10.04.2019, 08:48 | #1 |
Мрачный тип
|
Пара вопросов по grid в 2009-й
Коллеги, помогите разобраться с парой моментов по subj'у:
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
10.04.2019, 12:04 | #2 |
Участник
|
Перекрывай метод 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 |
Мрачный тип
|
Не подходит для решения моей задачи.
Я пытаюсь победить старинную багофичу интерфейса 2009-й, когда в на форме с несколькими гридами все гриды (активный и неактивные) имеют идентичный цвет выделения текущей позиции и бес его разберет, в каком гриде находится курсор. Решается это обычно двумя способами : 1) приходится всматриваться в каждый в целях поиска в подсвеченной строке либо контрола без цветовой пометки (фокус на контроле, который можно редактировать), либо контрола с тонкой пунктирной рамкой (фокус на readonly контроле) 2) тыкать мышом для уверенности в нужный грид Оба два варианта - потеря времени и порядком уже такая ситуация задрала. Без допиливания каждой формы отлавливать смену активного грида можно без проблем - info.formNotify() и доступный там экземпляр SysSetupFormRun дают прилично пространства для глобальных игрищ. Однако, на финальном шаге , когда на 100% достоверно получена информация о том, какой grid/datasource на произвольной форме в отловленный момент перехода с одного на другой является активным, а какой - нет, варианты исполнения задуманного не работают. Смена цвета выделения позиции не работает, маркировка записи программно на неактивном гриде при отключенном подсвечивании активной позиции - визуально не дает того же эффекта, что ручная маркировка (на втором вложении - результат того, когда в верхнем гриде выделил одну строку и перешел в нижний грид) .
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 10.04.2019 в 12:51. |
|
10.04.2019, 13:34 | #4 |
Участник
|
А если отслеживать изменение фокуса на контролах гида?
|
|
10.04.2019, 13:52 | #5 |
Мрачный тип
|
DmitryK, его, во- первых, глобально не отловишь и не получится в одном месте для любой произвольной формы использовать, а во-вторых - что оно даст ?
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
10.04.2019, 14:10 | #6 |
Участник
|
Пытался решать похожую задачку
Проблема с интерфейсом в Windows 2012 R2 и Ax2012 правда до конца не довел. Но может вам идея подойдет. |
|
10.04.2019, 14:16 | #7 |
Участник
|
глобальная переменная формы для каждого грида, меняется он назначения сброса фокуса каждого его контрола (как-то раньше это не вызывало проблем, работало). На самом гриде (рядом) отображать / гасить иконку отображающую, что фокус на его элементах. Такое решение для каждой конкретной формы, но сделать что-то на уровне ядра вам вряд ли удастся (мне так кажется).
|
|
10.04.2019, 14:35 | #8 |
Участник
|
У меня получилось. Так надо было?
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат! |
|
|
За это сообщение автора поблагодарили: TasmanianDevil (2), DmitryK (2). |
10.04.2019, 18:28 | #9 |
Мрачный тип
|
Оно самое. Чем меняли цвет ? Используемая цветовая схема ? Использовались ли допонительные методы обновления/перерисовки грида/формы ?
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 10.04.2019 в 18:32. |
|
10.04.2019, 20:46 | #10 |
Участник
|
Я перекрыл методы Enter на гридах - заголовке и строках.
Для SalesLineGrid X++: public void enter() { SalesLineGrid.activeBackColor(WindowsPalette::HighlightBackground); GridHeader.activeBackColor(WindowsPalette::InactiveTitleBar); super(); } X++: public void enter() { SalesLineGrid.activeBackColor(WindowsPalette::InactiveTitleBar); GridHeader.activeBackColor(WindowsPalette::HighlightBackground); super(); } Можно было перекрыть метод получения (или потери) фокуса. Но он сработает только, если нажал в гриде на поле, разрешенное к редактированию. Субъективно - показалось, что форма стала сильно тормозить. Но, возможно, что это просто тестовая база, у которой мало оперативки для кэша. ЗЫ: Дочитал вопрос - ничего дополнительного для прорисовки не использовал.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат! Последний раз редактировалось БАХ43; 10.04.2019 в 20:53. |
|
11.04.2019, 12:01 | #11 |
Мрачный тип
|
Все тоже самое делаю.
Хоть конкретно на форме, хоть через свой механизм отлова в run-time grid'а, принадлежащего источнику данных активной записи при событии RecordChange в info.formNotify() - результат смены цвета выделенной позиции идентичен предыдущему, т.е. никакой. Цветовая схема grid и самого дизайна формы - Default Ни компе стандартная тема Windows 7 с единственным изменением - однотонный цвет рабочего стола. Где-то завелся мелкий шайтанчик ...
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
11.04.2019, 12:03 | #12 |
Участник
|
Аксапта локально стоит ?
Если используется терминальный сервер, то проверьте тему рабочего стола на терминальнике. |
|
11.04.2019, 12:09 | #13 |
Мрачный тип
|
Да, обычный локальный виндовский клиент - никакого терминала.
P.S. во вложении - видео с экрана, поменяйте только расширение на mp4, иначе было не залить
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 11.04.2019 в 12:20. |
|
11.04.2019, 19:26 | #14 |
Участник
|
Попробуй поиграть с ColorScheme = RGB и классом WinApi::RGB2int. И в клиент перезаходи - дизайн формы закеширован может быть.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат! |
|
11.04.2019, 23:57 | #15 |
Участник
|
Еще одна мысля появилась. На табах, группах и все что выше по иерархии попробуй автодекларейшен в йес поставить... хз, у меня так стоит..
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат! |
|
12.04.2019, 00:08 | #16 |
Участник
|
Аяй. Вот прикол. Ща запустил клиента на 7-ке, тоже нет изменений в цвете.
Работает у меня оказывается только на Винсервер 2008
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат! |
|
12.04.2019, 07:07 | #17 |
Участник
|
А если классическую тему поставить?
|
|
12.04.2019, 10:06 | #18 |
Мрачный тип
|
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
12.04.2019, 11:44 | #19 |
Участник
|
Копай настройки Винды. В таком варианте activeBackColor работает
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат! |
|
|
За это сообщение автора поблагодарили: Logger (3). |
|
|