:: Visual Foxpro, Foxpro for DOS
Re: Раскраска строк Grid-а
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Саян
а как тогда отдать цвет в Динамик, если отдаешь его Интегером - ошибка, не тот тип данных, если отдаешь его в кавычках - тоже ошибка на тип данных, если макроподстановка без конвертации, ничего не происходит, если через преобразование в РГБ( и т.д. работает, но там дальше опять роги, вверху писал.

Ничего подобного. Если отдать цвет в кавычках, то ошибки нет:
oForm.My_Grid.Column1.DynamicBackColor = '123456'

Ну, или объясните, что для вас значит "отдать цвет".

Правила же просты:
1) цвет - это число;
2) свойство Dynamic* - строка, которая автоматически вычисляется подобно EVAL() и должна вернуть число.

И почему вы не привели примеры на каждую из описанных вами ошибок?
Вам бы объяснили, что там неверно.

Еще - выше есть работающий пример. Что в нем вам непонятно?



Исправлено 1 раз(а). Последнее : akvvohinc, 06.08.18 09:58
Ratings: 0 negative/1 positive
Re: Раскраска строк Grid-а
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Technic.PageFrame1.Page1.Grid1.Column1.DynamicBackColor = 'tmpComp.Color'


------------------
Ratings: 0 negative/1 positive
Re: Раскраска строк Grid-а
Sawradym

Сообщений: 2244
Откуда: Винница
Дата регистрации: 15.05.2007
Давайте по порядку разберем Ваш код:
LOCAL ColorCode, StrColor
ColorCode = GETCOLOR()
SELECT tmpComp
SCATTER MEMVAR fields ID, Color
m.Color = ColorCode
UPDATE Tech SET Color = m.Color WHERE Tech.ID = m.ID
SELECT tmpComp
GATHER MEMVAR FIELDS Color
здесь по видимому Вы хотите прописать значение цвета в поле Color таблицы tmpComp и попутно в таблицу Tech.
Вы делаете это для одной записи, а нужно это сделать для всех, так как св-во DynamicBackColor распространяется на все записи грида и будет вычислено для каждой из них! Думаю как только Вы это уясните, все встанет на свои места.


------------------
Ratings: 0 negative/1 positive
Re: Раскраска строк Grid-а
Саян
Автор

Сообщений: 57
Дата регистрации: 26.07.2007
Аспид
Technic.PageFrame1.Page1.Grid1.Column1.DynamicBackColor = 'tmpComp.Color'
- не допустимый тип данных, tmpComp.Color - это число, Integer.
Ratings: 0 negative/0 positive
Re: Раскраска строк Grid-а
Саян
Автор

Сообщений: 57
Дата регистрации: 26.07.2007
Уважаемый, все верно! tmp[имя таблицы] - это мой курсор, который отображается на экране, соответственно я хочу поменять цвет строки в гриде, который вижу сейчас и соответственно сохраняю цвет по ID в живую таблицу Tech - tmpComp - это пара Таблица - рабочий курсор. Объясните на пальцах чайнику, что вы хотите сказать последним своим сообщением, я не понимаю! (((
Ratings: 0 negative/0 positive
Re: Раскраска строк Grid-а
Sawradym

Сообщений: 2244
Откуда: Винница
Дата регистрации: 15.05.2007
Саян
Уважаемый, все верно! tmp[имя таблицы] - это мой курсор, который отображается на экране, соответственно я хочу поменять цвет строки в гриде, который вижу сейчас и соответственно сохраняю цвет по ID в живую таблицу Tech - tmpComp - это пара Таблица - рабочий курсор. Объясните на пальцах чайнику, что вы хотите сказать последним своим сообщением, я не понимаю! (((

Уфф... Покажите, для начала, свою функцию GetColor(), потому как без параметра, мне кажется, она не имеет смысла.
Тут я протупил. Вопрос о GetColor снимается.

Примерно вот так может выглядеть ваша функция(метод) для сохранения цвета.
LOCAL m.ColorCode, m.Id
m.ColorCode = GETCOLOR()
SELECT tmpComp
m.Id = tmpComp.Id
Replace Color With m.ColorCode
UPDATE Tech SET Color = m.ColorCode WHERE Tech.ID = m.ID
ThisForm.MyGrid.Refresh()

Св-во DynamicBackColor присваивается один раз на этапе инициализации грида. Для каждой записи его дергать не нужно.


------------------




Исправлено 3 раз(а). Последнее : Sawradym, 06.08.18 12:15
Ratings: 0 negative/1 positive
Re: Раскраска строк Grid-а
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Саян
- не допустимый тип данных, tmpComp.Color - это число, Integer.
Попробуйте пример Sawradym, тот который раньше был.
Вы увидите, что он работает.
У вас не работает по другой причине...

Попробуйте в табл Tech добавить поле Color
Сделайте
UPDATE Tech SET Color =0
После этого заполните какие то записи другими цветами
пропишите в init формы
Technic.PageFrame1.Page1.Grid1.Column1.DynamicBackColor = 'Tech.Color'
Далее,вам надо будет непосредственно в таблице, заполнять записи, с нужным цветом.
Sawradym выше описал как (можно и покороче).


------------------
Ratings: 0 negative/1 positive
Re: Раскраска строк Grid-а
Саян
Автор

Сообщений: 57
Дата регистрации: 26.07.2007
Уважаемые друзья! Все получилось! Большое БЛАГО-Дарю, всем, кто помогал. И так вот что в коде:

Процедура "покраски строки" с записью цвета в базу и тонированием строки в Grid-е:
LOCAL ColorCode, StrColor
ColorCode = GETCOLOR()
SELECT tmpComp
SCATTER MEMVAR fields ID, Color
m.Color = ColorCode
UPDATE Tech SET Color = m.Color WHERE Tech.ID = m.ID
SELECT tmpComp
GATHER MEMVAR FIELDS Color
Technic.PageFrame1.Page1.Grid1.Column1.SETALL("DynamicBackColor", "tmpComp.Color", "Column")

Вывод списка с кодом цвета непосредственно из базы при открытии общего реестра с уже покрашенными ранее строками:
WITH ThisForm.Pageframe1.Page1.Grid1
.RecordSource = 'tmpComp'
.COlumn22.ControlSource = 'tmpComp.SysStat'
.COlumn22.Width = 15
.COlumn1.ControlSource = 'allt(tmpComp.Inv_b)'
.COlumn1.Width = 50
.COlumn2.ControlSource = 'tmpComp.CPU'
.COlumn2.Visible = IIF(m.cfgCPU = 0, .t., .f.)
.COlumn2.Width = 210
...
.COlumn20.ControlSource = 'tmpComp.Room'
.COlumn20.Visible = IIF(m.cfgRoom = 0, .t., .f.)
.COlumn20.Width = 100
ENDWITH
This.PageFrame1.Page1.Grid1.SETALL("DynamicBackColor", "tmpComp.Color", "Column")



Исправлено 2 раз(а). Последнее : Саян, 06.08.18 12:59
Ratings: 0 negative/0 positive
Re: Раскраска строк Grid-а
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Саян
LOCAL ColorCode, StrColor
ColorCode = GETCOLOR()
SELECT tmpComp
SCATTER MEMVAR fields ID, Color
m.Color = ColorCode
UPDATE Tech SET Color = m.Color WHERE Tech.ID = m.ID
SELECT tmpComp
GATHER MEMVAR FIELDS Color
Technic.PageFrame1.Page1.Grid1.Column1.SETALL("DynamicBackColor", "tmpComp.Color", "Column")

Зачем столько кода для того что делается через
LOCAL nColor
nColor = GETCOLOR()
IF m.nColor >= 0 && дополнительно можно блокировать некоторые варианты цветов, например чёрный - т.к. чёрным по чёрному как-то не очень видно будет
UPDATE Tech SET Color = m.nColor WHERE Tech.ID = tmpComp.ID
REPLACE Color WITH m.nColor IN tmpComp
ENDIF
При том что если вместо "просто запросов" использовать CursorAdapter, то и перенос изменений из tmpComp в Tech можно автоматизировать, и вручную не писать все эти UPDATE.


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Раскраска строк Grid-а
Саян
Автор

Сообщений: 57
Дата регистрации: 26.07.2007
Igor Korolyov
Зачем столько кода для того что делается через
- Благодарю за оптимизацию (все никак пагубную привычку использовать Scatter не оставлю). В ответе я отписался просто о рабочем коде. Вообще попросили убрать палитру выбора и установить жестко 5 фиксированных цветов, т.е. даже проверка на черный не нужна оказалась))) Осталось только вот:
PARAMETERS LineColor
UPDATE Tech SET TColor = LineColor WHERE Tech.ID = tmpComp.ID
REPLACE TColor WITH LineColor IN tmpComp
_vfp.Forms(1).PageFrame1.Page1.Grid1.Column1.SETALL("DynamicBackColor", "tmpComp.TColor", "Column")
Ratings: 0 negative/0 positive
Re: Раскраска строк Grid-а
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Мне не понятен ваш код.
Где это вызывается?
Зачем вам tmpComp?
Она связана c tech?
Вот первое сообщение
Саян
Так вот идея такова, в основную таблицу добавил поле COLOR - для хранения цвета строчки в Grid.
в этом случае, код должен быть такой
.Grid1.Column1.SETALL("DynamicBackColor", "tech.Color", "Column")
И этот код нужно вызвать 1 раз, например в ините формы.
А сами цвета, заполняете в другом месте, и там не нужно повторять этот код.

И если решили 5 цветов, и каждому цвету, соответствует некое условие, то посмотрите более ранние ответы, можно цвет не хранить, а жестко в коде прописать (как вариант)

ЗЫ Понял. В гриде tmpComp. Видимо выборка из tech. Тогда все понятно)


------------------




Исправлено 1 раз(а). Последнее : Аспид, 07.08.18 12:37
Ratings: 0 negative/0 positive
Re: Раскраска строк Grid-а
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Аспид
жестко в коде прописать

За это надо бить ногами. А если завтра надо будет 15 цветов, а через год 25?


------------------
Позовите санитаров
Ratings: 0 negative/1 positive
Re: Раскраска строк Grid-а
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
spinz
Аспид
жестко в коде прописать

За это надо бить ногами. А если завтра надо будет 15 цветов, а через год 25?
Ну-ну)))
И что ты будешь делать, когда 25 понадобится?
Не будешь править код?

Написано, как вариант.
У меня в приложении, цвета настраиваются.
НЕ ВИДЕЛ юзера, который бы поменял умолчания.
А когда появляется новое условие, долго думаешь какой цвет выбрать)))
И все равно код меняешь.

Так что вполне нормальный вариант. И вопрос тут, вовсе не в том где хранить, а как распутать клубок в голове)

Безусловно, если цвет храниться в таблице с выводимыми данными, то не надо никаких условий, и будет любое кол-во цветов.
Я показал альтернативу (более обычную)


------------------




Исправлено 1 раз(а). Последнее : Аспид, 07.08.18 12:29
Ratings: 0 negative/0 positive
Re: Раскраска строк Grid-а
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Аспид
И что ты будешь делать, когда 25 понадобится?
Не будешь править код?

Хз, я крайне далек от фокса и не знаю его возможности. Но прописывать в коде цвета для грида - это наверняка не лучший вариант.


------------------
Позовите санитаров
Ratings: 0 negative/0 positive
Re: Раскраска строк Grid-а
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
spinz
Хз, я крайне далек от фокса и не знаю его возможности. Но прописывать в коде цвета для грида - это наверняка не лучший вариант.
Ну посмотри на этом форуме, как определяют, и удивишься, всюду (почти) константы.

ОК. Так к чему ты близок, и как там определяешь цвета?
(как будто это от языка зависит)


------------------
Ratings: 0 negative/0 positive
Re: Раскраска строк Grid-а
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Хз, я ж не программист


------------------
Позовите санитаров
Ratings: 0 negative/0 positive
Re: Раскраска строк Grid-а
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
По идее цвета можно хранить в справочнике цветов. Палитру же пользователю едва ли стоит давать вообще. Иначе он по простоте душевной такую попугайщину цыганскую может нарисовать, что сам потом ужаснется. Поэтому лучше всегда заранее самому выбрать не броские цвета и предлагать их на выбор. Если же как говорится и сам не можешь, есть в конце концов готовые таблицы цветов для web, выбрать оттуда. ;)


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/2 positive
Re: Раскраска строк Grid-а
Божья_коровка

Сообщений: 25720
Дата регистрации: 23.08.2001
Аспид
spinz
Хз, я крайне далек от фокса и не знаю его возможности. Но прописывать в коде цвета для грида - это наверняка не лучший вариант.
Ну посмотри на этом форуме, как определяют, и удивишься, всюду (почти) константы.
Ну вот у меня цвета константы На самом деле юзер привыкает к определённым цветам и уже понимает, что обозначает каждый цвет, а если ему давать выбор то он может запутаться даже со своими коллегами при обсуждении рабочих вопросов. А так все знают, что значит та или иная раскраска и что необходимо делать если вдруг....
Тут конечно еще зависит от логики применения цветов. Для чего они используются, просто так для красоты или несут в себе какую то информацию.


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/2 positive
Re: Раскраска строк Grid-а
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Божья_коровка
несут в себе какую то информацию
+100500
Просто еще одно измерение.
+ DynamicFontBold + DynamicForeColor + DynamicFontStrikethru
И глядя на конкретную запись, юзер понимает что с ней)))
(вот я не в состоянии все запомнить)))


------------------
Ratings: 0 negative/0 positive
Re: Раскраска строк Grid-а
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Эх, темные вы люди.


------------------
Позовите санитаров
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 BOBAN  (Гостей: 27)

© 2000-2024 Fox Club 
Яндекс.Метрика