Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Выделение разным цветом строк в DW / 13 сообщений из 13, страница 1 из 1
14.12.2005, 22:18
    #33436841
Amberit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
Здравствуйте, уважаемые коллеги!

Прошу у Вас помощи в одном непонятном для меня вопросе из раздела: "А как это сделать?"

Есть отчет (tabular DataWindow) вида:

0001 001 название
0001 002 название
0001 003 название
0002 022 название
0002 034 название
0118 098 название
0118 101 название
0222 001 название

Как сделать "зебру" - выделение строк разными цветами? Имеется в виду, что все строки с кодом 0001 должны иметь цвет фона по умолчанию, все строки с кодом 0002 должны иметь, например, серый цвет фона, все строки с кодом 0118 должны опять иметь цвет фона по умолчанию, все строки с кодом 0222 должны иметь серый цвет фона и т.д. Количество строк с определенным кодом неизвестно, как неизвестны и сами коды (выполняется запрос по условию).

Для меня проблема в том, что я не знаю, как поменять цвет фона какой-то одной строки в DW. Вопрос вроде бы простой, но ответа я найти пока не могу...
Буду благодарен за Вашу помощь, уважаемые коллеги... ;-)))
...
Рейтинг: 0 / 0
14.12.2005, 22:28
    #33436852
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
Самое простое - все поля transparent, rectangular object засандаливается в строку, его цвет - expression на значения кода, visibilty - тоже expression на значение кода, но виден он только тогда, когда надо НЕ по умолчанию...
...
Рейтинг: 0 / 0
15.12.2005, 01:26
    #33436944
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
а зачем rectangle если есть detail.color ?
...
Рейтинг: 0 / 0
15.12.2005, 02:34
    #33436970
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
Проще и гибче. Но можно и с detail.color
...
Рейтинг: 0 / 0
15.12.2005, 07:40
    #33437038
Amberit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
Уважаемые коллеги!

Дело в том, что составить expression для такого вот случая у меня не получается, формулу найти не могу. Может быть, наведете на мысль? ;-)

А пробовал я сделать обработку всех строк DW в цикле... Но как изменить цвет фона конкретной строки - я не знаю... ;-)
...
Рейтинг: 0 / 0
15.12.2005, 08:12
    #33437054
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
ну допустим поле называеся code.
делаем compute типа compute_1 = if (code<>code[-1],1,0)
потом делаем еще один типа compute_2 = cumulativesum(compute_1)
и цвет меняем в зависимости от значения остатка от деления compute_2 на два.
что то в этом духе.
...
Рейтинг: 0 / 0
15.12.2005, 10:02
    #33437210
AIZ
AIZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
Проще всего так:
if( Mod(GetRow(), 2) = 1,RGB(150, 200, 240),RGB(150,240,200))
...
Рейтинг: 0 / 0
15.12.2005, 10:08
    #33437224
AIZ
AIZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
Прошу прощения, не внимательно прочитал.
Наверное вложенный IF

IF (<условие 1> RGB(), IF (<условие2>, RGB(), IF(<условие3>, RGB(),Long(describe("DataWindow.Color")))))
...
Рейтинг: 0 / 0
15.12.2005, 10:16
    #33437240
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
у него нет условия 1,2,3 и т.п.
у него есть условие чередования цвета при смене значения поля "код", и он не знает как написать условие.
я предложил находить смену кода по code<>code[-1] суммировать это значение нарастающим итогом с помощью cumulativeSum и уже от полученной суммы брать Mod(сумма,2)

И еще - к code<>code[-1] надо добавить условие GetRow()<>1 а то для первой строки фигня получицца у нее нет предыдущей очевидно.
...
Рейтинг: 0 / 0
15.12.2005, 10:37
    #33437299
AIZ
AIZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
Если для каждого конкретного кода выделен конкретный цвет, то это один вопрос. Есть разные пути решения. Можно (в случае небольшого и неизменного набора кодов в базе) составить общее выражение и прошить его в DW. Можно (в случае изменяющегося набора кодов в базе) создать выражение динамически, но при этом где-то в базе или INI вести соответствие цвета коду. А если цвет не привязан к коду, то... звиняйте. Конечно в рамках одного запроса можно что-то придумать, но тогда цвета не будут привязаны к кодас в мировом масштабе. Волюнтаризм получится.
...
Рейтинг: 0 / 0
15.12.2005, 10:55
    #33437361
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
там в исходном посте есть слово "зебра".
ты вообще зебру видел?
на всякий случай напомню - там ДВА цвета и они чередуются. черный - белый - черный - белый - а в конце $опа.

з.ы. ой, щас модеры про этичность напомнят
...
Рейтинг: 0 / 0
15.12.2005, 11:03
    #33437395
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
ЗоринАндрей wrote:

> а в конце $опа.

А как это будет в RGB() ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
16.12.2005, 22:40
    #33442069
Amberit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение разным цветом строк в DW
Спасибо за помощь всем, кто помог решить данную проблемку, особенно ЗоринуАндрею. Честно говоря, не знал что в expression можно обращаться, например, к предыдущей записи... Все работает... ;-)))
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Выделение разным цветом строк в DW / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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