Страница 1 из 1

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

Добавлено: 18 янв 2013, 10:39
KorevaAD
Добрый день!
Производим докомпиляцию интерфейса. Столкнулись с необходимостью изменить цвет шрифта/фона строки в browse при определенных условиях. (как, например, В модуле "Управление персоналом" выделяются красным цветом юбилейные дни рождения).
Подскажите, пожалуйста, как это можно сделать? Если можно, пример.

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

Добавлено: 18 янв 2013, 10:44
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)}};

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

Добавлено: 18 янв 2013, 11:03
m0p3e
Для всей строки будет так:

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

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

Fields
 {font={bold=False;color = fnGetColor(LiEI.LStatus)}}
 LiEI.DESCR      #3'DESCR':[6]               ,Protect;

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

Добавлено: 22 янв 2013, 13:15
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?

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

Добавлено: 22 янв 2013, 18:50
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, приведенную выше.

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

Добавлено: 23 янв 2013, 01:54
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.

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

Добавлено: 23 янв 2013, 10:13
KorevaAD
Спасибо за ответы!
Dmitry_Sol, благодарю за описание, то, что нужно!
Использовала cfsSetExtProp, строку целиком выделила перебором всех полей.