Задвоенные записи в tree

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

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

Ответить
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Задвоенные записи в tree

Сообщение n0where »

Заполняю tree динамически через временную таблицу. после обработки появляются задвоенные записи. Никак не получается их обойти если я повторно вызываю doCreateTable.

Код: Выделить всё

create view
var
  node       : comp;
as select
  if(SearchMarker(lMarkerList,tmp_table.nRec,inx), '√', '')  ( FieldName = MarkerInx ),
  *
from
  tmp_table,
where
((
    node == tmp_table.cOwner
))
;

//...

procedure doCreateTable;
begin
MTClear(#tmp_table, mfNormal);

incert current tmp_table;
end;

//...

panel scr_Main;
  tree tr_tblMyTree  ('',,sci1EnInsTree);
    table tmp_table
    fields
     {Font = {
          bold  = if((MarkerInx='√'), true, false);
      }};
      tmp_table.sResv   'Наименование'  : [6]   , protect;
      tmp_table.sKol    'Кол-во'        : [4.2] , protect;
    end;
end;

//...

panel scr_Main; table tmp_table;
handleEvent
cmTreeTop: {
  node := 0;
}
cmTreeUp: {
  node := tmp_table.cOwner;
}
cmTreeDown: {
  node := tmp_table.nRec;
}
cmTreeNodeType: {
 if (tmp_table.cOwner<>0)
   TreeSetNodeType(tr_tblMyTree, 2);
}
end;
end;

HandleEvent
CmInit: {
  doCreateTable;
}
end;
end.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Задвоенные записи в tree

Сообщение Masygreen »

может поможет .. смотрите по аналогии с fpco

Код: Выделить всё

as select *
from  FPCO,FPCO FPCO1
where ((CurOwner_up==FPCO.cNode(noindex)))
      ;

//////////////////////для поментки жирного шрифта/////////////
function SearchIndex(_Nrec:comp):boolean;
{    
    if(GetFirst pr285FPCO where ((_Nrec==pr285FPCO._NrecFPCO)) =tsok) SearchIndex:=TRUE;
    else SearchIndex:=FALSE;
}
//////////////////////для поментки жирного шрифта/////////////
//////////////////визуальная часть//////////////////////
   panel PTree;
     table FPCO;
     TREE TREE_ORG;
        Show at (,,,);
          fields
            if(SearchIndex(FPCO.nrec),'v','')'v ':[3],Skip   ,{font={bold=TRUE}};
            FPCO.name   'Наименование группы' :Protect, [40],{font={bold=SearchIndex(FPCO.Nrec)}};
          end;
//////////////////визуальная часть//////////////////////

     HandleEvent 
//////////////////////////Начальная инициализация////////////////////////////////////////////////////
       cmInit:
       {
         TreeCloseAllOpenedNode(TREE_ORG);
       }    
//////////////////////////Начальная инициализация////////////////////////////////////////////////////
       cmTreeTop  :   {CurOwner_up := 0;}

       cmTreeDown :   {CurOwner_up := FPCO.nrec;}

       cmTreeUp   :   {CurOwner_up := FPCO.cNode;}

       cmTreeNodeType : { if TreeisTerminal(TREE_ORG) then TreeSetNodeType(TREE_ORG, ntfText);}
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Задвоенные записи в tree

Сообщение edward_K »

rescanpanel как миниум нужно делать после вставки. А на дереве еще TreeJump
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Задвоенные записи в tree

Сообщение n0where »

Код: Выделить всё

ResetBounds

//...Обновление

SetBounds
ReReadRecord
TreeJumpToRecord
Не помогает

Masygreen
Типо в переменную затолкнуть позицию? У меня разве по другому?
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Задвоенные записи в tree

Сообщение n0where »

Код: Выделить всё

  TreeCloseAllOpenedNode(tr_tblMyTree);
  TreeGetFirst(tr_tblMyTree);
Помогло частично - задвоения нет, но открыть какой-то узел не возможно
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Задвоенные записи в tree

Сообщение edward_K »

обычно для определения что это узел используют синоним - если есть записи main.nrec == slave.cowner тогда это узел. Перепешите cmTreeNodeType. И rescanpanel после каких то манипуляций с таблой всегда нужно делать.
Ответить