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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.07.2011, 20:08   #7  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
681 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
коллега, спасибо за попытку!

ваш вариант не работает, потому что при последующей отрисовке формы будет взят последний заданный цвет для каждого элемента.

задача решается через метод таблицы EditControl, где мы можем манипулировать цветом фона каждого элемента (control)

(на базе стандартной формы tutorial_Form_Table)

X++:
// Color the active line in a table
FormControl editControl(int column, int row)
{
    #DEFINE.colorDarkTurkoise(112,147,219)                  // colors at your personal perception of hell
    #DEFINE.colorNeonBlue(77,77,255)
    #DEFINE.colorRosyBrown(255,193,193)
    #DEFINE.colorSaddleBrown(139,69,19)
    // all color codes are at [url]http://web.njit.edu/~kevin/rgb.txt.html[/url]
    int oldStrColor = WinApi::RGB2int(#colorRosyBrown);     // colors for cells not in focus
    int oldIntColor = WinApi::RGB2int(#colorSaddleBrown);
    int newIntColor = WinApi::RGB2int(#colorNeonBlue);      // colors for the selected line
    int newStrColor = WinApi::RGB2int(#colorDarkTurkoise);
    ;
    // this is columns with int controls
    if ((column == 2) || (column == 4))
    {
        // not in the header
        if (row > 1)
        {
            // this is in the selected line
            if (row == table.row())
                intEdit.backgroundColor(newIntColor);
            else
                intEdit.backgroundColor(oldIntColor);
            return intEdit;
        }
        // this is the header
        else
        {
            if (row == table.row())
                editline.backgroundColor(newStrColor);
            else
                editline.backgroundColor(oldStrColor);
            return editline;
        }
    }
    else
    {
        if (row == table.row())
            editline.backgroundColor(newStrColor);
        else
            editline.backgroundColor(oldStrColor);
        return editline;
    }

}
необходимо также перерисовывать форму в методе таблицы activeCellChanged

X++:
public void activeCellChanged()
{
    ;
    super();
    // do not forget to repaint the form!
    element.redraw();
}
вопрос напоследок: это у меня одного ощущение неправильности подхода в использовании системы, когда пользователи хотят "разукрасить" жизнь?
__________________
Felix nihil admirari

Последний раз редактировалось wojzeh; 27.10.2019 в 19:35.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отображение таблицы в новой форме форме DAsm DAX: Программирование 23 04.03.2011 21:50
Управление форматом строки таблицы в Word формируемой в АХ 4.0 pwp DAX: Программирование 6 17.11.2009 11:28
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
Строки временной таблицы с разными DataAreaId PavelSR DAX: Программирование 16 26.03.2008 10:32
Изменение цвета строки таблицы Maxim Gorbunov DAX: База знаний и проекты 0 28.11.2001 12:46

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

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

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