#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
(десятичное значение, на которое, как я думал, вы ссылались).