Страница 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:
         {
         }
для того, чтобы определить предка и потомка...