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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.07.2011, 17:13   #1  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
выделение цветом строки таблицы
бонжур медам и месье!

я уже научился вслед за курсором менять в таблице (НЕ в гриде!) заголовки строки (кстати тот же подход почему-то не работает для колонок), а вот есть ли способ, чтобы менять цвет текущей строки таблицы?

таблица = control table

мерси. ax2009
__________________
Felix nihil admirari

Последний раз редактировалось wojzeh; 06.07.2011 в 18:03. Причина: для прояснения
Старый 06.07.2011, 17:29   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
используйте метод displayOption() на датасорсе формы.

а вообще изменение цвета в строках грида уже много раз обсуждалось, например тут.

найдете много тем если воспользуетесь поиском по форуму по слову "displayOption".

З.Ы. внизу в группе "Похожие темы" есть тема "Изменение цвета строки таблицы"
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 06.07.2011, 17:33   #4  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
речь о таблице, а не о гриде.
__________________
Felix nihil admirari
Старый 06.07.2011, 17:52   #5  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от wojzeh Посмотреть сообщение
речь о таблице, а не о гриде.
Вы используете контрол table?
Старый 06.07.2011, 18:03   #6  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от kornix Посмотреть сообщение
Вы используете контрол table?
именно!
__________________
Felix nihil admirari
Старый 07.07.2011, 11:45   #7  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Lightbulb
Задача интересная
По идее, можно попробовать перекрыть метод на контроле Table: activeCellChanged()
Внутри него можно пройтись циклом по контролам текущей строки. Правда, единственный метод, который может вернуть контрол ячейки Table - editControl(<строка>, <столбец>). Он возвращает FormControl, далее вам придется самостоятельно определять какой тип контрола у вашего столбца:
FormStringControl или FormIntControl и т.п.

А потом можно изменить цвет контролов (т.е. ячейки таблицы) текущей строки:
X++:
public void activeCellChanged()
{
    FormControl         control;
    FormStringControl   stringControl;
    int                 col;
    int                 curRow;
    ;
    super();

    curRow = table.row();

    for (col = 1; col <= 5; col++)
    {
        control = table.editControl(col, curRow);
        
        switch(< >):
        {
            ...
            case(...):
                stringControl = control;
                stringControl.backgroundColor(winApi::RGB2int(123,123,123));
            break;
            ...
        }

    }

}
За это сообщение автора поблагодарили: wojzeh (1).
Старый 11.07.2011, 20:08   #8  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (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.
Старый 11.07.2011, 22:18   #9  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от wojzeh Посмотреть сообщение
вопрос напоследок: это у меня одного ощущение неправильности подхода в использовании системы, когда пользователи хотят "разукрасить" жизнь?
это жесть
у меня после 5 секунд обзора вашего принтскрина уже глаза заболели, как с этим можно работать, представить не могу!
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 11.07.2011, 22:36   #10  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от lev Посмотреть сообщение
это жесть
у меня после 5 секунд обзора вашего принтскрина уже глаза заболели, как с этим можно работать, представить не могу!
в производстве всё спокойнее раскрашено, но суть не в этом.
__________________
Felix nihil admirari
Старый 12.07.2011, 00:55   #11  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Сообщение от wojzeh Посмотреть сообщение
X++:
public void activeCellChanged()
{
    ;
    super();
    // do not forget to repaint the form!
    element.redraw();
}
вопрос напоследок: это у меня одного ощущение неправильности подхода в использовании системы, когда пользователи хотят "разукрасить" жизнь?
а вас не смущает цветовое выделение строк в редакторе? а полосатый грид? а оформление экспортируемых в Excel данных?
На мой взгляд, это естественное желание пользователя получить быстрочитаемый интерфейс.
Всякие там юзерфрендли и юзабилити.
А уж делать что-то из этого или предложить достойную альтернативу, Вам решать.
Старый 12.07.2011, 09:00   #12  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от wojzeh Посмотреть сообщение
я уже научился вслед за курсором менять в таблице (НЕ в гриде!) заголовки строки (кстати тот же подход почему-то не работает для колонок), а вот есть ли способ, чтобы менять цвет текущей строки таблицы? таблица = control table
А не рассматривался ли вариант использования стороннего контрола, вроде Spreadsheet из Microsoft Office Web Components? Их, правда, нужно ставить на все клиентские компы, кроме того, развитие их остановилось на версии Office 2003, но OWC вполне себе прекрасно работают что с 2007-м, что с 2010-м офисом. Первоначальную "боевую раскраску" можно задать, сформировав соотв. xml-файл и вставив его в ячейку, как с обычным Excel. Сразу скажу, что не все возможности Excel поддерживаются в OWC, но тех, которые есть, для подобных задач более чем достаточно. К тому же, пользователи любят Excel
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отображение таблицы в новой форме форме 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, время: 05:42.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.