Существует ли какой-либо метод, который изменяет только определенный цвет сетки, а не целые поля и сетки формы в AX 2012?

#methods #axapta #x #dynamics-ax-2012

#методы #axapta #x #динамика-ax-2012

Вопрос:

У меня возникли некоторые проблемы с методом displayOptions в AX 2012. Я хочу изменить цвет сетки формы, в которой отображаются все вставленные данные, но мой метод также окрашивает все остальные поля, которые могут быть заполнены клиентом (полей нет в этой сетке). Мой метод записан в источнике данных forms и выглядит так —

 public void displayOption(Common _record, FormRowDisplayOption _options)
{
    KRHEvents events;

    events = _record;

    Switch(events.EventStatus)
    {

        Case 10:
    _options.backColor(65535); //Light Yellow

        Break;

        Case 30:
    _options.backColor(8421631); //Light Red

        Break;

        Case 20:
    _options.backColor(65408); //Light Green

    _options.textColor(12582912);
        Break;
    }

}
  

Форма выглядит следующим образом:
Форма

Моя цель — удалить цветные поля в правой части. Заполняемые поля не должны быть цветными. Может быть, мне нужно переопределить другой метод и в сетке? Я буду признателен за любую помощь!

Комментарии:

1. Сетка используется для отображения всех вставленных данных, но с полями правой стороны вы можете вставлять новые поля. Это означает, что сетка и эти поля имеют один и тот же источник данных. Этот метод нуждается в некоторых изменениях или, может быть, мне нужно переопределить некоторые методы в grid? Этот текущий метод записывается в метод источника данных

Ответ №1:

Вы можете указать, на какие элементы управления влияет цвет обратной стороны.

 _options.backColor(0x00FF80); // Light green
_options.affectedElementsByControl(OprId.id(), PatientId.id());
  

Также смотрите Этот блог .

Кстати, никогда не указывайте цвета в десятичной системе счисления, преобразуйте в шестнадцатеричную (BGR), 65535 = 0x00FFFF.

Комментарии:

1. Проблема в том, что я использую OperationId (и все другие идентификаторы) в grind для отображения всех вставленных данных, а также использую его в полях правой стороны, где я могу создавать новые данные. Если я укажу значение color OperationId, оно будет окрашивать его в полях формы и правой части. Я думаю, что тогда выхода нет.

2. Вы использовали affectedElementsByControl, указывая только элементы управления сеткой? В этом случае это влияет на большее количество элементов управления, чем указано.

3. @JanB. Кьельдсен — Почему вы говорите «никогда не указывайте цвета в десятичной системе счисления, преобразуйте в шестнадцатеричную»? Есть ли конкретная причина? Этот метод WinAPI::RGB2int(...) используется довольно широко.

4. @AlexKwitny Это тоже нормально и эквивалентно. Десятичное число не подходит.

5. @JanB. Кьельдсен о, хорошо, значит, вы говорите, что жестко закодированная десятичная дробь звучит так? RGB2int(...) возвращает int (десятичное значение, на которое, как я думал, вы ссылались).