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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.12.2011, 06:50   #1  
Dimitori is offline
Dimitori
Участник
 
18 / 15 (1) ++
Регистрация: 06.04.2008
Ax2009 RU7 как измененить цвет колонок в гриде?
Есть функционал который должен изменять цвет колонок.
X++:
void redrawPayTblDayHourTrans()
{
    FormIntControl   control;
    RPayCalendarDate payCalendarDate;
    ;

    while select  TransDate,PayDayType from  payCalendarDate index hint CalendarDateIdx
            where payCalendarDate.CalendarId == payTblTrans.PayCalendarId           &&
                  payCalendarDate.TransDate  >= dateStartMth(payTblTrans.SourceDate) &&
                  payCalendarDate.TransDate  <= endmth(payTblTrans.SourceDate)
    {
        control = element.design().controlName('PayTblDayHourTrans_Day'+int2str(dayofmth(payCalendarDate.TransDate)));
        control.allowEdit(true);

        if(payCalendarDate.PayDayType == RPayDayType::Holiday)
         control.backgroundColor(WindowsPalette::InactiveBorder);

        else
         control.backgroundColor(WindowsPalette::WindowBackground);
    }
    element.redraw();
}
Если в ax3.0 sp6 он отрабатывает как надо, то в ax2009 получается не так хорошо, цвет всей колонки меняется но это не видно, только если выделить ячейку меняется её цвет на нужный и только на момент выделения.
Может это проблема винды 7.
Старый 14.12.2011, 09:19   #2  
wolfstein is offline
wolfstein
Axapta Retail User
Axapta Retail User
 
51 / 91 (4) ++++
Регистрация: 05.07.2006
Попробуйте, например, так:
X++:
...
    if(payCalendarDate.PayDayType == RPayDayType::Holiday)
    {
        //изменить цвет колонки
        control.colorScheme(FormColorScheme::RGB);
        control.backgroundColor(WinAPI::rgb2int(128,128,128));
    }
    else
    {
        //вернуть к значениям по умолчанию
        control.colorScheme(FormColorScheme::Auto);
        control.backgroundColor(WindowsPalette::WindowBackground);
        control.foregroundColor(WindowsPalette::WindowText);
    }
...
За это сообщение автора поблагодарили: Pustik (1).
Старый 14.12.2011, 10:23   #3  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от Dimitori Посмотреть сообщение
Может это проблема винды 7.
Думаю это у всех так. У меня такая же хрень.
Цитата:
Сообщение от wolfstein Посмотреть сообщение
Попробуйте, например, так:
X++:
...
    if(payCalendarDate.PayDayType == RPayDayType::Holiday)
    {
        //изменить цвет колонки
        control.colorScheme(FormColorScheme::RGB);
        control.backgroundColor(WinAPI::rgb2int(128,128,128));
    }
    else
    {
        //вернуть к значениям по умолчанию
        control.colorScheme(FormColorScheme::Auto);
        control.backgroundColor(WindowsPalette::WindowBackground);
        control.foregroundColor(WindowsPalette::WindowText);
    }
...
Не плохой вариант, но в данном случае, невидно содержимое окрашенной ячейки активной строки если стоишь на соседней (не окрашенной) ячейки.
Вот так будет номано :
X++:
control.colorScheme(FormColorScheme::WindowsPalette);
    if(payCalendarDate.PayDayType == RPayDayType::Holiday)
        control.backgroundColor(WindowsPalette::InactiveBorder);
    else
        control.backgroundColor(WindowsPalette::WindowBackground);
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 14.12.2011 в 10:34.
За это сообщение автора поблагодарили: wolfstein (1).
Старый 14.12.2011, 12:26   #4  
Dimitori is offline
Dimitori
Участник
 
18 / 15 (1) ++
Регистрация: 06.04.2008
Спасибо за варианты. Не помогло. Сделал выделение по цвету шрифта.
X++:
 control.colorScheme(FormColorScheme::RGB);
      if(payCalendarDate.PayDayType == RPayDayType::Holiday)
        {        
          control.backgroundColor(WinApi::RGB2int(255,255,255)); 
          control.foregroundColor(WinApi::RGB2int(127,0,0));
          control.bold(9);
        }
        else
        {        
            control.backgroundColor(WinApi::RGB2int(255,255,255));
        }
Старый 14.12.2011, 12:52   #5  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Странно, у меня именно с control.colorScheme(FormColorScheme::WindowsPalette); работает как часы. Тестировалось неоднократно. Даже если не кодом, а тупо в свойстве контрола backgroundColor поставить WindowsPalette::InactiveBorder, то видно что оно не работает, пока в свойстве colorScheme не поставишь FormColorScheme::WindowsPalette.
Ну и решение с foregroundColor и bold тоже не плохой вариант.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 14.12.2011 в 13:00.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2009. Не работает скролл если на гриде активен столбец типа дата S.Kuskov DAX: Программирование 7 27.10.2016 12:14
Журнал Перенос и его проводки (Ax2009_Ru7) Shmel_83 DAX: Программирование 5 12.12.2011 13:47
Проблема после установки AX2009 RU7 Cheslav DAX: Администрирование 19 15.08.2011 09:29
Проблемы с возможностью изменения запроса после установки ТТН на Ax2009 RU7 Zan DAX: Программирование 2 12.08.2011 12:02
AX2009 -> RU5 -> RU6 -> RU7 Pustik DAX: Прочие вопросы 8 21.05.2011 15:25

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

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

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