Каким образом установить цвет поля в Alter interface
-
- партнер
- Сообщения: 19
- Зарегистрирован: Пн, 21/01/2008 10:48
- Имя Фамилия: Дмитрий Соловьев
- Откуда: Юнисофт
Каким образом установить цвет поля в Alter interface
Заказчик желает чтобы организации в каталоге Организаций подсвечивались разными цветами
написал слеующий текст
#component "L_KATORG"
alter interface GETKATOR
handleevent
cminit:
{
if(Inherited::HandleEvent(cmInit) = heOk) {}
_loop katorgimp
{
if(katorgimp.code='1')
{
SetFontColor (-1,-1,10,15);
}
else
{
SetFontColor (-1,-1,0,0);
}
}
}
cmpositionchanged:
{
if(Inherited::HandleEvent(cmPositionchanged) = heOk)
if(katorgimp.code='1')
{
SetFontColor (-1,-1,10,15);
}
else
{
SetFontColor (-1,-1,0,0);
}
}
end;
end.
Но изменение цвета происходит очень коряво. Подскажите к к какому событию лучше обращаться для прорисовки цветов по условию!!!
написал слеующий текст
#component "L_KATORG"
alter interface GETKATOR
handleevent
cminit:
{
if(Inherited::HandleEvent(cmInit) = heOk) {}
_loop katorgimp
{
if(katorgimp.code='1')
{
SetFontColor (-1,-1,10,15);
}
else
{
SetFontColor (-1,-1,0,0);
}
}
}
cmpositionchanged:
{
if(Inherited::HandleEvent(cmPositionchanged) = heOk)
if(katorgimp.code='1')
{
SetFontColor (-1,-1,10,15);
}
else
{
SetFontColor (-1,-1,0,0);
}
}
end;
end.
Но изменение цвета происходит очень коряво. Подскажите к к какому событию лучше обращаться для прорисовки цветов по условию!!!
-
- заказчик
- Сообщения: 117
- Зарегистрирован: Пт, 26/10/2007 14:16
- Имя Фамилия: Денис Кучин
- Откуда: Геомостпроект НПО
А может попробовать пойти по другому пути..
"
Докомпиляция интерфейсов целиком основана на механизме наследования vip-интерфейсов
"
В доке по наследованию последних заявлено "Замещение видимых элементов".
Ну и в browse нарисовать :
{Font = {BackColor = if(katorgimp.code='1',needcolor, 0) }};
Хотя сам не пробовал такого - не было необходимости пока )
"
Докомпиляция интерфейсов целиком основана на механизме наследования vip-интерфейсов
"
В доке по наследованию последних заявлено "Замещение видимых элементов".
Ну и в browse нарисовать :
{Font = {BackColor = if(katorgimp.code='1',needcolor, 0) }};
Хотя сам не пробовал такого - не было необходимости пока )
-
- партнер
- Сообщения: 19
- Зарегистрирован: Пн, 21/01/2008 10:48
- Имя Фамилия: Дмитрий Соловьев
- Откуда: Юнисофт
Спасибо за подсказку, действительно помогла замена browse
сделал вот так
#component "L_KATORG"
alter interface GETKATOR 'Выбор орг.'
hideformats BRKATORGIMP;
browse BRKATORGIMP1 (,,sci147EnEscTree);
show at (1,1,111,14);
table katorgimp;
fields
{Font = {BackColor = if(katorgimp.code='1',10, 0) }};
katorgimp.name 'Наименование':[40];
katorgimp.UNN 'УНН':[12];
katorgimp.ADDR 'Адрес':[40];
katorgimp.code 'код':[12];
end;
handleevent
cminit:{
if(Inherited::HandleEvent(cmInit) = heOk) {}
setformat(brkatorgimp1)
}
end;
end.
И сразу все заработало
сделал вот так
#component "L_KATORG"
alter interface GETKATOR 'Выбор орг.'
hideformats BRKATORGIMP;
browse BRKATORGIMP1 (,,sci147EnEscTree);
show at (1,1,111,14);
table katorgimp;
fields
{Font = {BackColor = if(katorgimp.code='1',10, 0) }};
katorgimp.name 'Наименование':[40];
katorgimp.UNN 'УНН':[12];
katorgimp.ADDR 'Адрес':[40];
katorgimp.code 'код':[12];
end;
handleevent
cminit:{
if(Inherited::HandleEvent(cmInit) = heOk) {}
setformat(brkatorgimp1)
}
end;
end.
И сразу все заработало
-
- заказчик
- Сообщения: 117
- Зарегистрирован: Пт, 26/10/2007 14:16
- Имя Фамилия: Денис Кучин
- Откуда: Геомостпроект НПО
Учитывая, что основная нагрузка этого фейса - выбор организации для n-го документа, отчета, то может быть не всегда этот путь так безоблачен. Я о том, что если интер-с будет более богат и напичкан разного рода функциональностью, то при использовании в атлантических функциях/методах,в которых в качестве параметра нужен идентификатор нужного видимого элемента не будет косяков интересна при работе. Ведь название бравсе Вы поменяли, хотя может id останется тот же, но все же инетересен этот моментик мне лично в плане если захочется сделать что то подобное в любом интер-се...
-
- заказчик
- Сообщения: 24
- Зарегистрирован: Чт, 10/07/2008 07:43
- Имя Фамилия: Дамир Ибатуллин
- Откуда: Стерлитамак
для Михаил Ларин
при этом, красной становится строка, на которой находится курсор и данные удовлетворяют условиям. Остальные строки - обычного цвета.
При перемещении по ним, цвет меняется: неактивная строка становится обычного цвета, активная и удовл.усл. - красного.
Код: Выделить всё
Browse brSpec ('Данные спецификации',,);
Fields
jSpDocs.KonkListN '№ конкур.листа' : [30],Protect,{ font = { backColor = if (length(jSpDocs.KonkListN) = 0 and jDogovor.KonkListN = '',10,0) } };
End;
При перемещении по ним, цвет меняется: неактивная строка становится обычного цвета, активная и удовл.усл. - красного.
-
- заказчик
- Сообщения: 117
- Зарегистрирован: Пт, 26/10/2007 14:16
- Имя Фамилия: Денис Кучин
- Откуда: Геомостпроект НПО
Да действительно, нужным цветом в журнале действий пользователя посвечиваются красным записи, попадающие в видимую область инте-са данного и неактивные (текущая) в данный момент ( некорректные записи имею ввиду...). Я нашел у себя такую - но у меня в поле "пользователь" у этой записи значения нема и если запись неактвина, то идет пропуск в подсветке данной записи (след поле "Операция" уже со значением и подсвечивается как нада красным.)
Жалко не нашел как сюда вставить картинку моего журнала (
Жалко не нашел как сюда вставить картинку моего журнала (
- larin
- топ-софт
- Сообщения: 228
- Зарегистрирован: Пн, 10/09/2007 12:13
- Имя Фамилия: Михаил Ларин
- Откуда: ТопCофт
- Контактная информация:
А можно весь код интерфейса глянуть? Из примера не ясно с какой таблицей связан этот BRОWSE, и какова структура логической таблицы.
Обычно BRОWSE и SCREEN нужно явно связывать с конкретной табличкой с помощью ключевого слова TABLE. Если этого не сделать то корневая коневой будет выбрана первая попавшаяся из ЛТ таблица. По этом отрисовка цвета и др. может и не работать.
К примеру этот код у меня работает.
PS: И даже без table HozOper т.к. ЛТ всего из одного узла состоит. Но что в вашем случае не понятно.
Обычно BRОWSE и SCREEN нужно явно связывать с конкретной табличкой с помощью ключевого слова TABLE. Если этого не сделать то корневая коневой будет выбрана первая попавшаяся из ЛТ таблица. По этом отрисовка цвета и др. может и не работать.
К примеру этот код у меня работает.
Код: Выделить всё
interface TestColor;
create view as select * from HozOper;
Browse brSpec ('Данные спецификации',,);
table HozOper;
Fields
HozOper.Name1 '№ конкур.листа' : [30], Protect,
{ font = { backColor = if (length(HozOper.Code) = 0 and HozOper.Code = '',10,0) } };
End;
end.
-
- заказчик
- Сообщения: 24
- Зарегистрирован: Чт, 10/07/2008 07:43
- Имя Фамилия: Дамир Ибатуллин
- Откуда: Стерлитамак
Михаил Ларин
код работает, но подсветка появляется только на строке, на которой находится курсор..
две таблицы - одна на скрин, вторая на броуз
код работает, но подсветка появляется только на строке, на которой находится курсор..
две таблицы - одна на скрин, вторая на броуз
Код: Выделить всё
Interface int_KorrDog 'Проверка заполненности полей договора/доп.соглашения' escclose;
...
Table struct jSpDocs "Спецификация"
(
Nrec : Comp ,
Code : string,
KonkListN : String,
KonkListD : date ,
cDoc : Comp
)
With Index
(
Cn1 = Nrec,
Cn2 = cDoc
)
;
...
Parameters DogovorNrec;
Panel panCaseSet
Table jDogovor;
Screen SRC (,,) show at (1,1,60,11)
Fields
...
Buttons
cmCancel;
<<
....
<. Ок .>
>>
End;
Browse brSpec ('Данные спецификации',,);
Show at (1,12,60,18);
Table jSpDocs;
Fields
jSpDocs.Code '№ ' : [10],Protect,Skip;
jSpDocs.KonkListN '№ конкур.листа' : [30],Protect,{ font = { backColor = if (length(jSpDocs.KonkListN) = 0 and upcase(jDogovor.KonkListN) = '',10,0) } };
jSpDocs.KonkListD 'Дата конкур.листа' : [30],Protect,{ font = { backColor = if (jSpDocs.KonkListd = date(0,0,0) and upcase(jDogovor.KonkListN) <> 'Б/Н',10,0) } };
End;
End;
HandleEvent
cmInit :
{
_Loop SpDocs Where ((
jDogovor.TiDk/== SpDocs.TiDk (noindex) and
jDogovor.nrec/== SpDocs.cDoc (noindex)
))
{
jSpDocs.Nrec :=SpDocs.Nrec;
jSpDocs.Code :=SpDocs.Code;
jSpDocs.cDoc :=SpDocs.cDoc;
_Loop AttrVal3 where (( coSpDocs /== attrnam3.wtable and
'Конкурентный лист: №'/== AttrNam3.Name and
coSpDocs /== attrval3.wtable and
SpDocs.Nrec /== AttrVal3.cRec and
AttrNam3.nrec /== Attrval3.cAttrNam
))
{
jSpDocs.KonkListN:= AttrVal3.vString;
}
_Loop AttrVal4 where (( coSpDocs /== attrnam4.wtable and
'Конкурентный лист: дата'/== AttrNam4.Name and
coSpDocs /== attrval4.wtable and
SpDocs.Nrec /== AttrVal4.cRec and
AttrNam4.nrec /== Attrval4.cAttrNam
))
{
jSpDocs.KonkListD:= AttrVal4.vDate;
}
Insert current jSpDocs;
}
ReReadRecord;
ReScanPanel(#jSpDocs);
}
cmCancel:
{
CloseInterFace(-1);
}
end;
end.