Изменение цвета выбранного подразделения.

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

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

Ответить
lingreen
Новичок
Сообщения: 20
Зарегистрирован: 06 сен 2006, 08:06
Контактная информация:

Изменение цвета выбранного подразделения.

Сообщение lingreen »

Привет всем.
Извените за такой вопрос, но у меня не получается сделать так чтоб при выборе из дерева нужного подразделения его цвет менялся(напр с синего на зелёный) и наоборот при повторном выборе этого же подразделения цвет его менялся с зелёного на синий.
aleks1232321
Постоянный гость
Сообщения: 86
Зарегистрирован: 28 апр 2005, 12:15
Откуда: Москва

Сообщение aleks1232321 »

Например, так
Katpodr.name 'Подразделение' ('Подразделение',,) : [50], Protect,
{Font = {Color = if (isValid(#Pick),ColorMark,0)}};
lingreen
Новичок
Сообщения: 20
Зарегистрирован: 06 сен 2006, 08:06
Контактная информация:

Сообщение lingreen »

я так пробывала, цвет меняется только в одну сторону, (напр с синего на зелёный) а обратно нет.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

{Font = {Color = if (isValid(#Pick),ColorSysBlue,ColorSysGreen)}};

После обработки pick (удаление/вставка) нужно перерисовать панель.
Хотя если цвет не меняется в одну из сторон (UnMark я так понимаю) то вероятно не удаляется запись из pick.
lingreen
Новичок
Сообщения: 20
Зарегистрирован: 06 сен 2006, 08:06
Контактная информация:

Сообщение lingreen »

может, кто подскажет почему цвет не меняется?
interface ForTree 'Выбор подразделений' cyan, doaccept;

create view
var
gnrec,groups: comp;
gkod, gname: string;
as select KatPodr.name, KatPodr.code
from
katPodr,
synonym KatPodr KatP
where ((
KatPodr.Nrec==pick.crec and
1==pick.wlist and
groups== Katpodr.cpodr and
KatPodr.nrec == KatP.cpodr
))
order by KatPodr.Kod;

create view ap
as select *
from pick
where (( 1==pick.wList));
parameters
gnrec;
tree Tr (,,sci14EnIns);
Table KatPodr;
fields
{
font={color =if( isvalid(tnpick) and pick.wlist=1,colorsysTeal,0)}} ;
katpodr.name 'наименование': [50];
KatPodr.kod 'Код подразделения': [15];
end;

handleevent
cmInit:
{ groups:=gnrec;
}
cmDefault:
{ gnrec := katPodr.nrec;
gkod := KatPodr.kod;
gname := KatPodr.name;

}
cmTreeNodeType:
{ if isvalidall(tnKatP)
then TreeSetNodeType(Tr, if(TreeNodeIsOpen(Tr), ntfopen, ntfclose))
else TreeSetNodeType(Tr, ntftext);
}
cmTreeTop: groups :=gnrec;
cmTreeDown: groups:=KatPodr.nrec;
cmTreeUp: groups:=KatPodr.cpodr;

cmMarkUnMark:
{
delete from pick where pick.crec=KatPodr.nrec and 1=pick.wlist;
insert pick set pick.crec:=KatPodr.nrec,
pick.wlist:=1;
reDrawPanel(#KatPodr);
}
end;

end.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

да это круто
delete from pick where pick.crec=KatPodr.nrec and 1=pick.wlist;
правильней так
if isvalid(#pick)
delete current pick
else
insert into pick set pick.crec:=KatPodr.nrec,
pick.wlist:=1;
вместо redrow лучше
Rescanpanel(#katpodr)
наверное когда побегаете по древу, то цвет всетаки отображаеться на помеченной записи?
lingreen
Новичок
Сообщения: 20
Зарегистрирован: 06 сен 2006, 08:06
Контактная информация:

Сообщение lingreen »

спсб за подсказку, если так написать, то работает.
А не могли бы вы подсказать есть ли в випе , что-нибудь похожее на CheckBox, и если есть то как енто использовать?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

screen scr1;
Fields
WordValue : noProtect;
<<
[.] Мой чекбокс`
>>
или сложнее
screen scr1;
Fields
WordValue : noProtect;
<<
[.] Мой чекбокс 1`
[.] Мой чекбокс 2`
[.] Мой чекбокс 3`
[.] Мой чекбокс 4`
>>
В этой случае в WordValue будет выборка
1+2+4+8
Какой выбран проверить можно например так
Function IsChecked ( Value : word; Item : byte ) : boolean;
Begin
IsChecked := ( ( Value shr ( Item - 1 ) ) and 1 ) = 1;
End;
Ответить