Помогите организовать дерево...

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

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

Ответить
Sytin
Постоянный обитатель
Сообщения: 159
Зарегистрирован: 28 сен 2005, 19:48
Откуда: mos
Контактная информация:

Помогите организовать дерево...

Сообщение Sytin »

Смысл заключается в построении 3-х уровневого дерева по договорам(Д), доп.соглашениям(ДС) и субподрядным договорам(СП). Дерево аналогично дереву из реестра договоров, только надо добавить возможность смотреть подцепленный субподряд для Д и ДС.
Вобщем дерево такого типа:
Д
|_ДС
| |_СП
|
|_СП

И вообще возможно ли это?
Буду очень благодарен за помощь.
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

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