Изменение цвета строки в browse по условию

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
KorevaAD
Сообщения: 4
Зарегистрирован: 06 ноя 2012, 09:56

Изменение цвета строки в browse по условию

Сообщение KorevaAD »

Добрый день!
Производим докомпиляцию интерфейса. Столкнулись с необходимостью изменить цвет шрифта/фона строки в browse при определенных условиях. (как, например, В модуле "Управление персоналом" выделяются красным цветом юбилейные дни рождения).
Подскажите, пожалуйста, как это можно сделать? Если можно, пример.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Изменение цвета строки в browse по условию

Сообщение Masygreen »

вроде этого пишете .. только тут цвет шрифта .. меняйте функцию на заливку ..

Код: Выделить всё

#doc
подсветка строк по типу
#end
function fnGetColor(_LStatus:word):integer;
{
 fnGetColor := mcColorBlack;
 if (_LStatus = mcStatusSave)   fnGetColor := mcColorGreen;//
 if (_LStatus = mcStatusCancel) fnGetColor := mcColorGray;
 if (_LStatus = mcStatusError)  fnGetColor := mcColorRed;
} 

Код: Выделить всё

browse br_Head;
show(,,84,17);
Table LiEI;

Fields
 LiEI.DESCR      #3'DESCR':[6]               ,Protect,{font={bold=False;color = fnGetColor(LiEI.LStatus)}};
Время ведет!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Изменение цвета строки в browse по условию

Сообщение m0p3e »

Для всей строки будет так:

Код: Выделить всё

browse br_Head;
show(,,84,17);
Table LiEI;

Fields
 {font={bold=False;color = fnGetColor(LiEI.LStatus)}}
 LiEI.DESCR      #3'DESCR':[6]               ,Protect;
KorevaAD
Сообщения: 4
Зарегистрирован: 06 ноя 2012, 09:56

Re: Изменение цвета строки в browse по условию

Сообщение KorevaAD »

browse br_Head;
show(,,84,17);
Table LiEI;
Fields
{font={bold=False;color = fnGetColor(LiEI.LStatus)}}
LiEI.DESCR #3'DESCR':[6] ,Protec
работает когда создаем свой интерфейс.
Мне необходимо внести изменения в стандартный Галактический интерфейс (Alter interface). На fnGetColor ругается.
Может, кто-нибудь использовал SetFontBackgroundColor?
timaskraft
Сообщения: 17
Зарегистрирован: 21 май 2008, 11:03
Откуда: Витебск

Re: Изменение цвета строки в browse по условию

Сообщение timaskraft »

KorevaAD писал(а):browse br_Head;
show(,,84,17);
Table LiEI;
Fields
{font={bold=False;color = fnGetColor(LiEI.LStatus)}}
LiEI.DESCR #3'DESCR':[6] ,Protec
работает когда создаем свой интерфейс.
Мне необходимо внести изменения в стандартный Галактический интерфейс (Alter interface). На fnGetColor ругается.
Может, кто-нибудь использовал SetFontBackgroundColor?
Полагаю, в alter не добавили функцию fnGetColor, приведенную выше.
Dmitry_Sol
Постоянный гость
Сообщения: 76
Зарегистрирован: 07 июн 2007, 12:32
Откуда: Витебск
Контактная информация:

Re: Изменение цвета строки в browse по условию

Сообщение Dmitry_Sol »

В атлантис, начиная с 5.4.37 появилась функция
cfsSetExtProp (aObjName : string | longInt; aPropName : string | longInt; aField : anyType);
где

Код: Выделить всё

aObjName - имя или указатель объекта.
aPropName - имя или код свойства из следующего списка:
       cfpFontBold = 1207;
       cfpFontItalic = 1208;
       cfpFontColor = 1209;
       cfpFontBackColor = 1210;
        cfpInputMask = 1211.
например в интерфейсе накладных на отпуск выделим цветом сумму у всех накладных более 100000 руб.

Код: Выделить всё

#component "L_Soprdoc"
alter  interface "SoprDoc"
HandleEvent
 cmInit:
       {
          if(Inherited::HandleEvent(cmInit) = heOk) {}
         cfsSetExtProp('c_BRSELECTNAKL_SUM_Сумма',1210,if(Katsopr.summa>100000,9,0));
       }
end;
end.
К сожалению сделать чтоб выделились все поля, можно только последовательным перебором полей в ф -ии cfsSetExtProp, или целиком заменой browse.
KorevaAD
Сообщения: 4
Зарегистрирован: 06 ноя 2012, 09:56

Re: Изменение цвета строки в browse по условию

Сообщение KorevaAD »

Спасибо за ответы!
Dmitry_Sol, благодарю за описание, то, что нужно!
Использовала cfsSetExtProp, строку целиком выделила перебором всех полей.
Ответить