powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Изменение цвета строки грида
8 сообщений из 8, страница 1 из 1
Изменение цвета строки грида
    #32707869
xamlo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, помогите, кто может помочь.
Мне нужно реализовать изменение цвета строки грида в зависимости от выбора значения в одной из колонок. Т.е я встроил комбу в колонку (у меня column19), в комбо предлагаются на выбор четыре значения ('zn1','zn2','zn3' и пустое значение) Источником для грида (grdzakupka) служит таблица (У меня 'zakupka')
В Init грида прописываю:

DO CASE
CASE zakupka.column19 = 'zn1'
THISFORM.grdzakupka.SETALL("dynamicForeColor","RGB(255,0,0)","column")
CASE zakupka.column19= 'zn2'
THISFORM.grdzakupka.SETALL("dynamicForeColor","RGB(100,100,100)","column")
CASE zakupka.column19 = 'zn3'
THISFORM.grdzakupka.SETALL("dynamicForeColor","RGB(100,0,0)","column")
OTHERWISE
THISFORM.grdzakupka.SETALL("dynamicForeColor","RGB(255,255,0)","column")
ENDCASE

Дальше обновляю грид.

Так вот, получается, что всегда в case выбирается вариант Otherwise, и все строки грида, а не текущая окрашиваются в RGB(255,255,0). В чем ошибка? В поиске смотрел, пробовал другие варианты - не получается.
...
Рейтинг: 0 / 0
Изменение цвета строки грида
    #32707892
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не совсем понял но я бы попытался сделать так
использовать iif в dinamicbackcolour просто в дизайнере
...
Рейтинг: 0 / 0
Изменение цвета строки грида
    #32707896
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То что ты написал, это не динамическое изменение цвета строки в зависимости от некоторого условия. Ты сделал просто изменение цвета шрифта ВСЕХ строк БЕЗ каких-либо условий.

Перенеси код в INIT- формы в таком виде:

Код: plaintext
1.
2.
3.
THISFORM.grdzakupka.SETALL("dynamicForeColor",;
"IIF(zakupka.column19 = 'zn1',RGB(255,0,0),;
IIF(zakupka.column19= 'zn2',RGB(100,100,100),;
IIF(zakupka.column19 = 'zn3',RGB(100,0,0),RGB(255,255,0) )))","column")
...
Рейтинг: 0 / 0
Изменение цвета строки грида
    #32707934
xamlo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я так только что и сделал, даже все работает, только вот уж очень громоздкая кострукция получается
#DEFINE COLOREXPR "iif(zakupka.column19 = 'Неоплаченные в работе',;
rgb(255,0,0),iif(zakupka.column19= 'zn1',rgb(0,128,0),;
iif(zakupka.column19= 'zn2',rgb(0,64,128),;
iif(zakupka.column19= 'zn3',rgb(100,100,100),rgb(0,0,0)))))"
THISFORM.grdzakupka.SETALL("dynamicForeColor",COLOREXPR,"column")
Может есть вариант с более дружественной к человеку конструкцией? Хотя ладно, главное работает. Всем спасибо.
...
Рейтинг: 0 / 0
Изменение цвета строки грида
    #32707941
xamlo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я так только что и сделал, даже все работает, только вот уж очень громоздкая кострукция получается
#DEFINE COLOREXPR "iif(zakupka.column19 = 'Неоплаченные в работе',;
rgb(255,0,0),iif(zakupka.column19= 'zn1',rgb(0,128,0),;
iif(zakupka.column19= 'zn2',rgb(0,64,128),;
iif(zakupka.column19= 'zn3',rgb(100,100,100),rgb(0,0,0)))))"
THISFORM.grdzakupka.SETALL("dynamicForeColor",COLOREXPR,"column")
Может есть вариант с более дружественной к человеку конструкцией? Хотя ладно, главное работает. Всем спасибо.
...
Рейтинг: 0 / 0
Изменение цвета строки грида
    #32707963
Pavel_t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно создать процедуру и ли метод формы
и вставить в выражение
THISFORM.grdzakupka.SETALL("dynamicForeColor",;
the_color(zakupka.column19 ),"column")

procedure the_color
parameters P_column19

DO CASE
CASE P_column19 = 'zn1'
return RGB(255,90,0)
CASE P_column19= 'zn2'
return RGB(255,20,0)
..............................
..............................
CASE P_column19 = 'zn9999'
return RGB(255,255,0)
OTHERWISE
return RGB(0,0,0)
ENDCASE

return


.... и только время боится пирамид!
...
Рейтинг: 0 / 0
Изменение цвета строки грида
    #32751668
rashidnuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самый удобный способ мне кажется выглядит так :
В свойствах формы(properties) щелкаем на Activate Event, в открывшееся окно
ввода процедуры вставляем : thisform.Grid1.Columns(2).dynamicforecolor = "IIF(saldnd<0, RGB(255,0,0), RGB(0,0,0))" thisform.Grid1.Columns(2).dynamicbackcolor = "IIF(saldnd<0, RGB(255,255,0), RGB(255,255,255))"
здесь Grid1 это имя Grid-таблицы(его видно в левом нижнем углу), Columns(2) это номер колонки Grid1, saldnd<0 это имя поля соответствующее номеру. В результате цифры с отрицательным значением будут красного цвета на желтом фоне. Быстро узнать имя поля соответствующее номеру колонки можно через Builder Grid-таблицы.
...
Рейтинг: 0 / 0
Изменение цвета строки грида
    #32752106
xamlo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем еще раз спасибо
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Изменение цвета строки грида
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]