06.07.2011, 17:13 | #1 |
Участник
|
выделение цветом строки таблицы
бонжур медам и месье!
я уже научился вслед за курсором менять в таблице (НЕ в гриде!) заголовки строки (кстати тот же подход почему-то не работает для колонок), а вот есть ли способ, чтобы менять цвет текущей строки таблицы? таблица = control table мерси. ax2009
__________________
Felix nihil admirari Последний раз редактировалось wojzeh; 06.07.2011 в 18:03. Причина: для прояснения |
|
06.07.2011, 17:29 | #2 |
Ищущий знания...
|
используйте метод displayOption() на датасорсе формы.
а вообще изменение цвета в строках грида уже много раз обсуждалось, например тут. найдете много тем если воспользуетесь поиском по форуму по слову "displayOption". З.Ы. внизу в группе "Похожие темы" есть тема "Изменение цвета строки таблицы"
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
06.07.2011, 17:33 | #4 |
Участник
|
речь о таблице, а не о гриде.
__________________
Felix nihil admirari |
|
06.07.2011, 17:52 | #5 |
MCP
|
|
|
06.07.2011, 18:03 | #6 |
Участник
|
__________________
Felix nihil admirari |
|
07.07.2011, 11:45 | #7 |
MCP
|
Задача интересная
По идее, можно попробовать перекрыть метод на контроле 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 |
Участник
|
коллега, спасибо за попытку!
ваш вариант не работает, потому что при последующей отрисовке формы будет взят последний заданный цвет для каждого элемента. задача решается через метод таблицы 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; } } 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 |
Ищущий знания...
|
Цитата:
у меня после 5 секунд обзора вашего принтскрина уже глаза заболели, как с этим можно работать, представить не могу!
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
11.07.2011, 22:36 | #10 |
Участник
|
в производстве всё спокойнее раскрашено, но суть не в этом.
__________________
Felix nihil admirari |
|
12.07.2011, 00:55 | #11 |
----------------
|
Цитата:
На мой взгляд, это естественное желание пользователя получить быстрочитаемый интерфейс. Всякие там юзерфрендли и юзабилити. А уж делать что-то из этого или предложить достойную альтернативу, Вам решать. |
|
12.07.2011, 09:00 | #12 |
Участник
|
Цитата:
|
|