powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DynamicBackColor
6 сообщений из 6, страница 1 из 1
DynamicBackColor
    #36812498
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть установка grid:

thisform.Grid1.SetAll('dynamicBackColor','IIF(p1<0,RGB(255, 0, 0),RGB(255, 255,255))','Column')

Как получить свойство DynamicBackColr Grida?

и есть ф-я RGB а как по номеру цвета получить red, green, blue?
...
Рейтинг: 0 / 0
DynamicBackColor
    #36812513
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamisКак получить свойство DynamicBackColr Grida?У грида нет такого свойства. Стучитесь к какому-нибудь элементу и смотрите там.
glamisи есть ф-я RGB а как по номеру цвета получить red, green, blue?RGB - это просто 255*255*R+255*G+B. Обратное преобразование очевидно - деление с остатком.
...
Рейтинг: 0 / 0
DynamicBackColor
    #36812691
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Local lncolor
lncolor = GetColor()
If lncolor>= 0 
    Local lnRed, lnGreen, lnBlue
    If GetRGB(lncolor, @lnRed, @lnGreen, @lnBlue)
    	? lnRed
    	? lnGreen
    	? lnBlue
    endif
endif
Return 

Function GetRGB()
Lparameters tnColor, tnRed, tnGreen, tnBlue
tnRed   = CToBin(Substr(BINTOC(tnColor),  4 ,  1 )) +  128 
tnGreen = CToBin(Substr(BINTOC(tnColor),  3 ,  1 )) +  128 
tnBlue  = CToBin(Substr(BINTOC(tnColor),  2 ,  1 )) +  128 
Return .t.
...
Рейтинг: 0 / 0
DynamicBackColor
    #36813135
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirRGB - это просто 255*255*R+255*G+B. Обратное преобразование очевидно - деление с остатком.
Небольшая поправка. Множитель - это число 256 (2^8)

http://www.sql.ru/forum/actualthread.aspx?tid=325555
...
Рейтинг: 0 / 0
DynamicBackColor
    #36813322
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, как правило, значение RGB() - это число типа Integer. Физически, тип integer занимает 4 байта и читается справа-налево. Соответственно распределение значения по байтам будет выглядеть так:

первый байт - пустой
второй байт - Blue
третий байт - Green
четвертый байт - Red

Опираясь на этот факт можно использовать функции бинарных преобразований, сдвинув число влево/вправо, чтобы стереть "лишние" биты для выделения нужной последовательности

Код: plaintext
1.
2.
3.
4.
5.
lncolor = GetColor()
lnColor = int(lnColor)    && на всякий случай
?'Red=', 	Bitrshift(Bitlshift(lnColor,  8 * 3 ),  8 * 3 )
?'Green=', 	Bitrshift(Bitlshift(lnColor,  8 * 2 ),  8 * 3 )
?'Blue=', 	Bitrshift(Bitlshift(lnColor,  8 * 1 ),  8 * 3 )

Фактически, тоже самое сдела и прошелмимо только используя другие функции. Хотя, там проще было взять ASCII-коды полученных символов. Впрочем, это не принципиально.
...
Рейтинг: 0 / 0
DynamicBackColor
    #36814904
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

спасибо, все получилось
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DynamicBackColor
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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