Подкрашивание ячеек или колонок Grid'а
На страницу 1, 2 След.
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Ср Мар 30, 2011 09:45  Подкрашивание ячеек или колонок Grid'а |
|
Полезность: Нет оценки
|
Доброго времени суток!
Кто знает, подскажите пож-та, как подкрасить ячейку или колонку грида? желательно без кода в клиент-скрипте. Заранее спасибо |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Ср Мар 30, 2011 10:50  Re: Подкрашивание ячаеек или колонок Grid'а |
|
Полезность: 1
|
san_light пишет: | Доброго времени суток!
Кто знает, подскажите пож-та, как подкрасить ячейку или колонку грида? желательно без кода в клиент-скрипте. Заранее спасибо |
тут либо клиент скрипт.. либо CSMD... на мой взгляд клиент скрипт попроще будет. _________________ всегда есть как минимум 2 выхода |
|
 |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Ср Мар 30, 2011 14:10  Re: Подкрашивание ячаеек или колонок Grid'а |
|
Полезность: Нет оценки
|
Alexsey пишет: | san_light пишет: | Доброго времени суток!
Кто знает, подскажите пож-та, как подкрасить ячейку или колонку грида? желательно без кода в клиент-скрипте. Заранее спасибо |
тут либо клиент скрипт.. либо CSMD... на мой взгляд клиент скрипт попроще будет. |
можете пример кода, если вам не трудно, а то че-то методом научного тыка не получается, а примеров найти не могу  |
|
 |
ggrey Участник со стажем
Вступление в Клуб: 01.10.2007
|
Ср Мар 30, 2011 14:59   |
|
Полезность: 2
|
Как пример:
Код: |
Public Sub ColorTheGrid
lCol = ClientGrid.ColByQual("PLAN_LEVEL")
For i = 1 To ClientGrid.Rows
if ClientGrid.Value(i, lCol) > 75 Then
ClientGrid.CellBackColor(i, 1, i, lCol) = 13*256*256+24*256+249
else
ClientGrid.CellBackColor(i, 1, i, lCol) = 0
end if
Next
End Sub |
|
|
 |
budinva Участник - экстремал
Вступление в Клуб: 15.01.2008
|
Ср Мар 30, 2011 15:11   |
|
Полезность: Нет оценки
|
посмотрите дистрибутивные раскрасски, например:
система - выполнение заданий по расписанию - Список заданий (color)
раскраска через "стиль ячеек", правда тут есть ограничение на длинну кода |
|
 |
budinva Участник - экстремал
Вступление в Клуб: 15.01.2008
|
Ср Мар 30, 2011 15:12   |
|
Полезность: Нет оценки
|
посмотрите дистрибутивные раскрасски, например:
система - выполнение заданий по расписанию - Список заданий (color)
раскраска через "стиль ячеек", правда тут есть ограничение на длинну кода |
|
 |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Ср Мар 30, 2011 15:44   |
|
Полезность: Нет оценки
|
ggrey пишет: | Как пример:
Код: |
Public Sub ColorTheGrid
lCol = ClientGrid.ColByQual("PLAN_LEVEL")
For i = 1 To ClientGrid.Rows
if ClientGrid.Value(i, lCol) > 75 Then
ClientGrid.CellBackColor(i, 1, i, lCol) = 13*256*256+24*256+249
else
ClientGrid.CellBackColor(i, 1, i, lCol) = 0
end if
Next
End Sub |
|
спасибо, завтра попробую. |
|
 |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Ср Мар 30, 2011 15:46   |
|
Полезность: Нет оценки
|
budinva пишет: | посмотрите дистрибутивные раскрасски, например:
система - выполнение заданий по расписанию - Список заданий (color)
раскраска через "стиль ячеек", правда тут есть ограничение на длинну кода |
насколько я знаю - это справедливо для представлений (или я ошибаюсь?), а мне нужна раскраска в GRIDe на форме |
|
 |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Чт Мар 31, 2011 13:56   |
|
Полезность: Нет оценки
|
san_light пишет: | ggrey пишет: | Как пример:
Код: |
Public Sub ColorTheGrid
lCol = ClientGrid.ColByQual("PLAN_LEVEL")
For i = 1 To ClientGrid.Rows
if ClientGrid.Value(i, lCol) > 75 Then
ClientGrid.CellBackColor(i, 1, i, lCol) = 13*256*256+24*256+249
else
ClientGrid.CellBackColor(i, 1, i, lCol) = 0
end if
Next
End Sub |
|
спасибо, завтра попробую. |
спасибо, все получилось  |
|
 |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Пт Апр 01, 2011 07:34   |
|
Полезность: Нет оценки
|
san_light пишет: | san_light пишет: | ggrey пишет: | Как пример:
Код: |
Public Sub ColorTheGrid
lCol = ClientGrid.ColByQual("PLAN_LEVEL")
For i = 1 To ClientGrid.Rows
if ClientGrid.Value(i, lCol) > 75 Then
ClientGrid.CellBackColor(i, 1, i, lCol) = 13*256*256+24*256+249
else
ClientGrid.CellBackColor(i, 1, i, lCol) = 0
end if
Next
End Sub |
|
спасибо, завтра попробую. |
спасибо, все получилось  |
вот только проблема - перекрашивать грид надо по default-у и валидации, а также при удалении и добавлении строк (P_MESSAGE in ('BEFORE_GRID_ADD_ROW', 'BEFORE_GRID_DEL_ROW')), но отрабатывает только в первых двух случаях.
вот такой вот код
Код: |
if p_message in ('DEFAULT', 'BEFORE_GRID_ADD_ROW', 'BEFORE_GRID_DEL_ROW', 'VALIDATE') then
v_summ := 0;
rec_id := to_number(substr(p_info, instr(p_info, '[')+1, instr(p_info, ']') - instr(p_info, '[') - 1));
for i in grid.first..grid.last
where p_message <> 'BEFORE_GRID_DEL_ROW' or p_message = 'BEFORE_GRID_DEL_ROW' and i <> rec_id
loop
debug_pipe ('rec_id = ' || rec_id, 0);
debug_pipe ('i = ' || i, 0);
begin
v_summ := v_summ + nvl(grid(i).[SUMM_KT], 0);
-- Проверка наличия номера заявки на конвертацию
if grid(i).[VALUTA_KT] = val_kt
and grid(i).[VALUTA_DT] <> grid(i).[VALUTA_KT]
and grid(i).[Z_CONV_NUM] is null then
[CSMD].command(V_DEST_STR, 'Color_The_Grid ' || grid_name || ', "Z_CONV_NUM", ' || i ||', vbRed');
null;
else
[CSMD].command(V_DEST_STR, 'Color_The_Grid ' || grid_name || ', "Z_CONV_NUM", ' || i ||', vbWindowBackground');
null;
end if;
exception when NO_DATA_FOUND then
null;
end;
end loop;
-- Проверка соответствия сумм платежей сумме перевода
debug_pipe ('v_summ = ' || v_summ, 0);
debug_pipe ('sum_kt_all = ' || sum_kt_all, 0);
if v_summ > sum_kt_all then
[CSMD].command(V_DEST_STR, 'Color_The_Grid ' || grid_name || ', "SUMM_KT", 0, vbGreen');
elsif v_summ < sum_kt_all then
debug_pipe ('grid_name (vbRed) = ' || grid_name, 0);
[CSMD].command(V_DEST_STR, 'Color_The_Grid ' || grid_name || ', "SUMM_KT", 0, vbRed');
else
[CSMD].command(V_DEST_STR, 'Color_The_Grid ' || grid_name || ', "SUMM_KT", 0, vbWindowBackground');
end if;
end if;
|
все debug_pipe выводят то что и должно быть, но скрипт отрабатывает только кода P_MESSAGE = 'DEFAULT' или 'VALIDATE'
Код: |
Sub Color_The_Grid(grid, col_name, row_id, color)
lCol = grid.ColByQual(col_name)
'msgbox(col_name) 'проверка
if row_id > 0 then
grid.CellBackColor(row_id, lCol, row_id, lCol) = color
else
For i = 1 To grid.Rows
grid.CellBackColor(i, lCol, i, lCol) = color
Next
end if
End Sub
|
Почему? как решить? Заранее спасибо |
|
 |
ggrey Участник со стажем
Вступление в Клуб: 01.10.2007
|
Пт Апр 01, 2011 09:13   |
|
Полезность: Нет оценки
|
Не понятно откуда у вас берутся события 'BEFORE_GRID_ADD_ROW', 'BEFORE_GRID_DEL_ROW'.
И в любом случае эти события должны передаваться в p_info, а не в p_validate. |
|
 |
ggrey Участник со стажем
Вступление в Клуб: 01.10.2007
|
Пт Апр 01, 2011 09:23   |
|
Полезность: Нет оценки
|
Сейчас под рукой нет документации и системы ЦФТ-Банк, но насколько я помню событие добавления и удаления строк должно обрабатываться в клиент-скрипте, и я не уверен что они так же отражаются в серверном валидаторе. |
|
 |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Пт Апр 01, 2011 11:03   |
|
Полезность: Нет оценки
|
Прошу прощения за неполный код. Поясняю:
код, приведенный выше - это тело процедуры проверки, не подумал про заголовок
Код: |
-- Проверка корректности грида (с подкрашиванием)
procedure GRID_CHECK_with_color(
p_message varchar2,
P_INFO varchar2,
sum_kt_all ref [SUMMA],
val_kt ref [FT_MONEY],
grid_name varchar2,
grid in out GRID_TABLE,
V_DEST_STR in out varchar2(32000)
) is
v_summ [SUMMA];
rec_id number;
|
Процедура вызывается из блока проверок, в p_message и P_INFO передаются соответствующие параметры p_message и P_INFO.
Значения p_message = 'BEFORE_GRID_ADD_ROW' и 'BEFORE_GRID_DEL_ROW' как раз и возникают после события, которое можно отловить в клиент-скрипте при добавлении и удалении записи грида.
Повторюсь - обработка происходит, но sub Color_The_Grid, вызываемый через [CSMD].command не выполняется (хотя при DEFAULT и VALIDATE отрабатывает все)
Последний раз редактировалось: san_light (Пт Апр 01, 2011 13:01), всего редактировалось 1 раз |
|
 |
ggrey Участник со стажем
Вступление в Клуб: 01.10.2007
|
Пт Апр 01, 2011 11:43   |
|
Полезность: Нет оценки
|
Посмотрел доку, да действительно есть такие события и действительно передаются в серверный валидатор. Не очень понимаю как вам помочь в этой ситуации, на мой взгляд остается только смотреть отладку. |
|
 |
san_light Участник со стажем
Вступление в Клуб: 18.03.2011
|
Пт Апр 01, 2011 12:58   |
|
Полезность: Нет оценки
|
ggrey пишет: | Посмотрел доку, да действительно есть такие события и действительно передаются в серверный валидатор. Не очень понимаю как вам помочь в этой ситуации, на мой взгляд остается только смотреть отладку. | спасибо, за попытку помочь.
что ж... жду еще советов |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|