Страница 1 из 1
Помогите организовать дерево...
Добавлено: 25 янв 2008, 19:13
Sytin
Смысл заключается в построении 3-х уровневого дерева по договорам(Д), доп.соглашениям(ДС) и субподрядным договорам(СП). Дерево аналогично дереву из реестра договоров, только надо добавить возможность смотреть подцепленный субподряд для Д и ДС.
Вобщем дерево такого типа:
Д
|_ДС
| |_СП
|
|_СП
И вообще возможно ли это?
Буду очень благодарен за помощь.
Добавлено: 05 фев 2008, 10:20
Alexander
Код: Выделить всё
Create View Vmain
var
CurOwner : comp ;
As
Select
*,
if(spdocs.prmc = 1, katmc.name, katusl.name) (FieldName NameMCUSL),
From
Dogovor,
spdocs,
dogovor DogAttach1
Where
((
CurOwner == dogovor.cdogovor
and dogovor.nrec == spdocs.cdoc
and dogovor.nrec == DogAttach1.cdogovor
and dogovor.tidk == spdocs.tidk
and spdocs.cmcusl == katmc.nrec
and spdocs.cmcusl == katusl.nrec
and spdocs.cotped == katotped.nrec
)) order by dogovor.ddoc;
#include dogicons.vpp
panel ptree
tree TreeMain(,,sci178InsPM)
show at(,,,15);
table Dogovor;
fields
Dogovor.ddoc '' : [8], protect;
Dogovor.descr '' : [3], protect;
Dogovor.nodoc '' : [6], protect;
Dogovor.summa '' : protect;
end;
handleevent
cmTreeTop : {
curOwner := 0;
}
cmTreeDown : {
curOwner := vMain.Dogovor.nrec;
}
cmTreeUp:{
curOwner := vMain.dogovor.cdogovor;
}
cmTreeNeedOwner:
{
TreeGetFirstEx(TreeMain);
}
cmTreeNodeType:
{
var DocTreeType: byte;
if RecordExists DogAttach1 <> tsOK
DocTreeType := ntfText
else
DocTreeType := if(TreeNodeIsOpen(TreeMain), ntfOpen, ntfClose);
TreeSetNodeType(TreeMain,
DocTreeType,
GetDocTreeIcon(Dogovor.TiDk,
Dogovor.Status,
DocTreeType));
}
end;
end;
Handleevent
Cminit:{
InitDocIconsArray();
}
End;
Думаю, сюда можно и СП подцепить. Сам такого не делал...
наверное, нужно будет доделать
Код: Выделить всё
cmTreeTop : {
}
cmTreeDown : {
}
cmTreeUp:{
}
cmTreeNeedOwner:
{
}
для того, чтобы определить предка и потомка...