Программирование на Атлантисе (VIP, FCOM, ARD), FastReport
Модераторы: m0p3e , edward_K , Модераторы
n0where
Местный житель
Сообщения: 499 Зарегистрирован: 30 дек 2010, 08:16
Сообщение
n0where » 05 июл 2011, 15:54
Заполняю 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
Откуда: Москва
Контактная информация:
Сообщение
Masygreen » 05 июл 2011, 17:33
может поможет .. смотрите по аналогии с 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
Сообщение
edward_K » 05 июл 2011, 21:26
rescanpanel как миниум нужно делать после вставки. А на дереве еще TreeJump
n0where
Местный житель
Сообщения: 499 Зарегистрирован: 30 дек 2010, 08:16
Сообщение
n0where » 06 июл 2011, 08:32
Код: Выделить всё
ResetBounds
//...Обновление
SetBounds
ReReadRecord
TreeJumpToRecord
Не помогает
Masygreen
Типо в переменную затолкнуть позицию? У меня разве по другому?
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
n0where
Местный житель
Сообщения: 499 Зарегистрирован: 30 дек 2010, 08:16
Сообщение
n0where » 06 июл 2011, 08:49
Код: Выделить всё
TreeCloseAllOpenedNode(tr_tblMyTree);
TreeGetFirst(tr_tblMyTree);
Помогло частично - задвоения нет, но открыть какой-то узел не возможно
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188 Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb
Сообщение
edward_K » 06 июл 2011, 10:40
обычно для определения что это узел используют синоним - если есть записи main.nrec == slave.cowner тогда это узел. Перепешите cmTreeNodeType. И rescanpanel после каких то манипуляций с таблой всегда нужно делать.