agregar multiples niveles a un treeWidget


([N1] eneida) #1

Buenos dias, Si alguien me puede ayudar con alguna funcion especifica que me permita mostrar una tabla arbolada de 4 niveles en un treeWidget. Solo logro hacer esto para el nivel 1
item=menu.addTopLevelItem();
item.setText(0, opcionId);
item.setText(1, opcionTexto);
Y luego no se como agregar niveles dentro de el. Solo se agregarle items con esta funcion:
opcion=item.addChild();
opcion.setText(0, opcionId);
opcion.setText(1, opcionTexto);


([N1] wikan) #2

Si la tabla es arbolada se te mostrará directamente los niveles que disponga.

Si lo que quieres es crear directamente una vista arbolada, tienes que añadir hijos por items, es decir…
item=menu.addTopLevelItem(); -> añades un item de nivel superior, 1
opcion=item.addChild(); -> añades un item al nivel superior, de ahí item.

Si quieres añadir un hijo a ese, tendrás que usar, opcion.addChild() para ir añadiendo hijos a la rama, nivel 2, y así sucesivamente.


([N1] Juan) #3

Espero te ayude esto, va a 3 niveles:
DOC_TYPE_M : tabla de tipos de documentos
DOC_H: tabla cuya maestra es la anterior pero es la maestra de documentos por paciente
DOC_ATACH_H: tabla cuya maestra es la anterior pero aqui se guardan los adjuntos

// ----------------------------
// Cargar el menú dinámico
// ----------------------------
var cargarMenu = function()
{
importClass (“VImage” );
var tree = theRoot.dataView().control(“TREE” );
tree.setHeaderLabel(0, “Name”);
tree.setHeaderLabel(1, “ID”);
tree.setHeaderLabel(2, “OFF”); //FALTA USAR ESTE RECURSO PARA Q SI NO TIENE LO ELIMINAMOS
//YA ESTA LO DEL OFF PERO DEBERIA PODER IDENTIFICARLO
tree.setHeaderLabel(3, “Nivel”); //T(Type) D(Document) S(Scan) “A”(Atach)
tree.setHeaderLabel(4, “Filename”); // En Atach el nombre del Archivo
tree.setHeaderLabel(5, “Date”);
tree.hideColumn(1);
tree.hideColumn(2);
tree.hideColumn(3);
tree.hideColumn(4);
tree.setIconSize(16, 16);
tree.headerHidden = true;
tree.clear();
var icoType = new VImage();
icoType.loadResource(“51v9lri4.vca/TYPE_DOC_ICO”);
var icoDoc = new VImage();
icoDoc.loadResource(“51v9lri4.vca/DOCS_ICO”);
var icoAtach = new VImage();
icoAtach.loadResource(“51v9lri4.vca/ATACH_ICO”);
var icoScan = new VImage();
icoScan.loadResource(“51v9lri4.vca/SCAN_ICO”);
// --------------------------------------------------------------------------------
// Preparamos el patrón de DocTypes
// --------------------------------------------------------------------------------
var patternType = tree.createItemRegPattern();
//patternType.addChildPattern(patternDocs);
patternType.setTable(“ez_bd/DOC_TYPE_M”);
patternType.setIdFieldText(0, “NAME”);
patternType.setIdFieldText(1, “ID”);
patternType.setIdFieldText(2, “OFF”);
patternType.setTextAlignment(0,0x0080);
//patternType.setText(3, “T”);
patternType.setIcon(0, icoType);
// --------------------------------------------------------------------------------
// Preparamos el patrón de PatientDocs
// --------------------------------------------------------------------------------
var patternDocs = tree.createItemRegPattern();
patternDocs.setTable(“ez_bd/DOC_H”);
patternDocs.setIdFieldText(0, “TITLE_FORM”); //NUEVO
patternDocs.setIdFieldText(1, “ID”);
patternDocs.setIdFieldText(4, “FILENAME_SDV”);//NUEVO
patternDocs.setIdFieldText(5, “DATE”);//NUEVO
patternDocs.setTextAlignment(0,0x0080);
//patternDocs.setText(3, “D”);
//patternDocs.setIcon(0, icoDoc);
// --------------------------------------------------------------------------------
// Preparamos el patrón de DocAtach
// --------------------------------------------------------------------------------
var patternAtach = tree.createItemRegPattern();
patternAtach.setTable(“ez_bd/DOC_ATACH_H”);
patternAtach.setIdFieldText(0, “FILENAME”);
patternAtach.setIdFieldText(1, “ID”);
patternAtach.setIdFieldText(4, “FILENAME_SDV”);//NUEVO
patternAtach.setTextAlignment(0,0x0080);
//patternAtach.setText(3, “A”);
patternAtach.setIcon(0, icoAtach);
// --------------------------------------------------------------------------------
// Leemos la lista de DOC_TYPE_M a cargar en el treewidget
// --------------------------------------------------------------------------------
var lstTypes = new VRegisterList(theRoot);
lstTypes.setTable(“ez_bd/DOC_TYPE_M”);
var a = new Array;
lstTypes.load(“ORDEN_ALL”, a);
// --------------------------------------------------------------------------------
// Cargamos la lista de películas al treewidget aplicando el patrón
// --------------------------------------------------------------------------------
tree.addTopLevelItemRegisterList(lstTypes ,patternType);
// --------------------------------------------------------------------------------
// Recorremos los Types del treewidget para incluir los Documents
// --------------------------------------------------------------------------------
for(var x = 0 ; x < tree.topLevelItemCount; ++x)
{
var itemType = tree.topLevelItem(x);
itemType.setText(3,“T”);
var curType = lstTypes.readAt(x);
//var lstDocs = curType.loadPlurals(“DOC_H_DOC_TYPE_M”);
var lstDocs = new VRegisterList(theRoot);
lstDocs.setTable(“ez_bd/DOC_H”);
var a = new Array(curType.fieldToInt(“ID”),theRoot.varToInt(“ID_CERT”));
lstDocs.load(“DOC_TYPE”, a);
itemType.addChildRegisterList(lstDocs, patternDocs);
if ((itemType.text(2)==1)&&(itemType.childCount()==0))//Validacion del OFF
tree.deleteTopLevelItem(x)
else
{
for(var y = 0 ; y < itemType.childCount(); ++y)
{
var itemDoc = itemType.child(y);
var curDoc = lstDocs.readAt(y);
if (curDoc.fieldToInt(“DOC_MST”))
{
itemDoc.setIcon(0, icoDoc);
itemDoc.setText(3,“D”);
}
else {
itemDoc.setIcon(0, icoScan);
itemDoc.setText(3,“S”);
}
var lstAtachs = curDoc.loadPlurals(“DOC_ATACH_H_DOC_H”);
itemDoc.addChildRegisterList(lstAtachs, patternAtach);
for(var z = 0 ; z < itemDoc.childCount(); ++z)
{
var itemAtach = itemDoc.child(z);
var curAtach = lstAtachs.readAt(z);
itemAtach.setText(3,“A”);
//itemAtach.setText(4,curAtach.fieldToString(“FILENAME”));
}
}
}
};
//tree.resizeColumnToContents(0);
tree.setColumnWidth(0,350)
//tree.expandAll()
};


([N1] eneida) #4

Gracias por su aportes, he solucionado mi problema!!!