VItemRegisterPattern
Con esta clase podemos configurar el patrón a aplicar al control TreeWidget.
En el patrón disponemos de funciones para configurar las columnas, formularios de alta, baja y modificación, los colores, fuentes y alineaciones a aplicar a los nodos del árbol añadidos a través del patrón.
Indice de funciones
Generales
Number flags()
Boolean setDeleteForm( String idRefForm )
Boolean setEditForm( String idRefForm )
void setFlags( Number flags )
Boolean setNewRecordForm( String idRefForm )
Boolean setTable( String idRefTable )
De columnas
Number backgroundColor( Number column )
Number columnCount()
VFont font( Number column )
Number foregroundColor( Number column )
VImage icon( Number column )
String idFieldIcon( Number column)
String idFieldText( Number column)
void setBackgroundColor( Number column, Number rgbaColor )
void setBackgroundColor( Number column, Number r, Number g, Number b, Number a = 255 )
void setFont( Number column, VFont font )
void setForegroundColor( Number column, Number rgbaColor )
void setForegroundColor( Number column, Number r, Number g, Number b, Number a = 255 )
void setIcon( Number column, VImage image )
void setIdFieldIcon( Number column, String idCampo )
void setIdFieldText( Number column, String idCampo )
void setTextAlignment( Number nCol, Number nAlignment )
Number textAlignment( Number column)
Patrones hijos
void addChildPattern( VItemRegisterPattern childPattern )
VItemRegisterPattern childPattern( Number index )
Number childPatternCount()
Documentación de funciones
Funciones generales
Number flags()
Devuelve el valor de los flags configurados para el ítem. Los valores posibles son:
0 = No tiene fijada ninguna propiedad
1 = Puede ser seleccionado
2 = Puede ser editado
4 = Puede ser arrastrado
8 = Puede ser usado como destino de un drop
16 = Puede ser marcado o desmarcado por el usuario
32 = El usuario puede interactuar con el ítem
64 = El ítem se puede marcar con 3 estados independientes
Boolean setDeleteForm( String idRefForm )
Establece el formulario de baja para el control TreeWidget para los ítem generados con el patrón.
Parámetros:
idRefForm: idRef del formulario de baja.
Boolean setEditForm( String idRefForm )
Establece el formulario de edición/modificación para el control TreeWidget para los ítem generados con el patrón.
Parámetros:
idRefForm: idRef del formulario de edición/modificación.
void setFlags( Number flags )
Permite configurar diferentes valores del ítem como si es seleccionable, editable, arrastrable, etc. Ver enum ItemFlag para conocer todos los valores configurables.
Parámetros:
flags: valor numérico que combina los valores, que pueden ser:
0 = No tiene fijada ninguna propiedad
1 = Puede ser seleccionado
2 = Puede ser editado
4 = Puede ser arrastrado
8 = Puede ser usado como destino de un drop
16 = Puede ser marcado o desmarcado por el usuario
32 = El usuario puede interactuar con el ítem
64 = El ítem se puede marcar con 3 estados independientes
Boolean setNewRecordForm( String idRefForm )
Establece el formulario de alta para el control TreeWidget para los ítem generados con el patrón.
Parámetros:
idRefForm: idRef del formulario de alta.
Boolean setTable( String idRefTable )
Establece la tabla a usar en el patrón para el control TreeWidget.
Parámetros:
idRefTable: idRef de la tabla.
Funciones de columnas
Number backgroundColor( Number column )
Devuelve un número que se corresponde con el color de fondo de una columna.
Parámetros:
column: número de columna (la primera es la 0).
Number columnCount()
Devuelve el nº de columnas que tiene el ítem en curso en el control TreeWidget.
VFont font( Number column )
Devuelve un objeto de la VFont con la fuente establecida para la columna especificada.
Parámetros:
columna: número de columna (la primera es la 0).
Number foregroundColor( Number column )
Devuelve un número que se corresponde con el color de texto de una columna.
Parámetros:
column: número de columna (la primera es la 0).
VImage icon( Number column )
Devuelve un objeto de la clase VImage con el icono que se visualiza en una columna del ítem.
Parámetros:
column: número de columna (la primera es la 0).
String idFieldIcon( Number column)
Devuelve el identificador del campo que contiene el icono que se visualiza en la columna.
Parámetros:
column: número de columna (la primera es la 0).
String idFieldText( Number column)
Devuelve el identificador del campo que contiene el contenido/texto que se visualiza en la columna.
Parámetros:
column: número de columna (la primera es la 0).
void setBackgroundColor( Number column, Number rgbaColor )
Fija el color de fondo de una columna del ítem pasándole un número que representa el valor RGBA de color.
Parámetros:
column: número de columna del ítem.
rgbaColor: número que se corresponde con la representación decimal del valor hexadecimal de un color en formato RGBA.
void setBackgroundColor( Number column, Number r, Number g, Number b, Number a = 255 )
Fija el color de fondo de una columna del ítem pasándole por separado los colores del formato RGBA del color de fondo.
Parámetros:
column: número de columna del ítem.
r: número que se corresponde con la representación decimal del color rojo.
g: número que se corresponde con la representación decimal del color verde.
b: número que se corresponde con la representación decimal del color azul.
a: número que se corresponde con la representación decimal del canal alfa o transparencia.
void setFont( Number column, VFont font)
Fija la fuente de la columna.
Propiedades:
column: número de columna.
font: objeto de la clase VFont que representa a la fuente.
void setForegroundColor( Number column, Number rgbaColor )
Fija el color del texto de una columna del ítem pasándole un número que representa el valor RGBA de color.
Parámetros:
column: número de columna del ítem.
rgbaColor: número que se corresponde con la representación decimal del valor hexadecimal de un color en formato RGBA.
void setForegroundColor( Number column, Number r, Number g, Number b, Number a = 255 )
Fija el color del texto de una columna del ítem pasándole por separado los colores del formato RGBA del color de fondo.
Parámetros:
column: número de columna del ítem.
r: número que se corresponde con la representación decimal del color rojo.
g: número que se corresponde con la representación decimal del color verde.
b: número que se corresponde con la representación decimal del color azul.
a: número que se corresponde con la representación decimal del canal alfa o transparencia.
void setIcon( Number column, VImage image )
Fija el icono que se mostrará en una columna del ítem.
Parámetros:
column: número de columna del ítem.
image: objeto de la clase VImage que contiene el icono a visualizar.
void setIdFieldIcon( Number column, String idCampo )
Fija el campo que se usará para mostrar el icono en la columna.
Parámetros:
column: número de columna del ítem.
idCampo: identificador del campo de tipo objeto imagen a visualizar.
void setIdFieldText( Number column, String idCampo )
Fija el campo que se usará para mostrar el contenido en la columna.
Parámetros:
column: número de columna del ítem.
idCampo: identificador del campo de tipo objeto imagen a visualizar.
void setTextAlignment( Number nCol, Number nAlignment )
Configura la alineación de los textos en una columna del ítem en curso.
Parámetros:
column: número de la columna del ítem.
alignFlags: número de el valor de los flags de alineamiento. Los valores posibles son:
Derecha = 0×0002
Centrado horizontal = 0×0004
Justificado = 0×0008
Absoluto = 0×0010
Arriba = 0×0020
Abajo = 0×0040
Centrado vertical = 0×0080
Number textAlignment( Number column)
Devuelve un número que se corresponde con el valor de alineamiento de texto del ítem y columna en curso, ver enum flags de alineamiento.
Patrones hijos
void addChildPattern( VItemRegisterPattern childPattern )
Añade un patrón como un nodo hijo del ítem en curso.
Parámetros:
childPatter: objeto de la clave VItemRegisterPattern que se usará para generar nodos hijos.
VItemRegisterPattern childPattern( Number index )
Devuelve un patrón seleccionado que se corresponde con un objeto de la clase VItemRegisterPattern.
Parámetros:
index: número de patrón (el primero es el 0).
Number childPatternCount()
Devuelve el número de patrones configurados en los nodos hijos del ítem.
Ejemplos
Ejemplo de películas con repartos
// --------------------------------------------------------------------------------
// TreeWidget de películas y sus repartos
// --------------------------------------------------------------------------------
importClass ("VImage" );
// --------------------------------------------------------------------------------
// Preparamos y configuramos el control treewidget
// --------------------------------------------------------------------------------
var tree = theRoot.dataView().control("CONTROL" );
tree.setHeaderLabel(0, "Título");
tree.setHeaderLabel(1, "Año / Trabajo");
tree.setIconSize(64, 80);
// --------------------------------------------------------------------------------
// Creamos el top level del árbol con un icono basado en un objeto dibujo
// --------------------------------------------------------------------------------
var icoPelis = new VImage();
icoPelis.loadResource("CINE/CINE_32");
var itemCarpetaPeliculas = tree.addTopLevelItem();
itemCarpetaPeliculas.setText(0, "Películas");
itemCarpetaPeliculas.setIcon(0, icoPelis);
// --------------------------------------------------------------------------------
// Preparamos el patrón de películas
// --------------------------------------------------------------------------------
var patternPeli = tree.createItemRegPattern();
patternPeli.addChildPattern(patternReparto);
patternPeli.setTable("CINE_DAT/PELICULAS");
patternPeli.setIdFieldIcon(0, "CARTEL");
patternPeli.setIdFieldText(0, "NAME");
patternPeli.setTextAlignment(0, VTreeItem.AlignLeft | VTreeItem.AlignVCenter);
patternPeli.setIdFieldText(1, "AGNO");
patternPeli.setTextAlignment(1, VTreeItem.AlignLeft | VTreeItem.AlignVCenter);
patternPeli.setNewRecordForm("CINE/PELICULA");
patternPeli.setEditForm("CINE/PELICULA");
patternPeli.setDeleteForm("CINE/ELIMINAR_PELICULA");
// --------------------------------------------------------------------------------
// Preparamos el patrón de repartos
// --------------------------------------------------------------------------------
var patternReparto = tree.createItemRegPattern();
patternReparto.setTable("CINE_DAT/REPARTOS");
patternReparto.setIdFieldIcon(0, "PERSONAS.FOTO");
patternReparto.setIdFieldText(0, "PERSONAS.NAME");
patternReparto.setIdFieldText(1, "TRABAJOS.NAME");
patternReparto.setNewRecordForm("CINE/REPARTO_PRUEBAS");
patternReparto.setEditForm("CINE/REPARTO_PRUEBAS");
patternReparto.setDeleteForm("CINE/REPARTO_CARTEL_P");
// --------------------------------------------------------------------------------
// Leemos la lista de películas a cargar en el treewidget
// --------------------------------------------------------------------------------
var pelis = new VRegisterList(theRoot);
pelis.setTable("CINE_DAT/PELICULAS");
var a = new Array;
pelis.load("ID", a);
// --------------------------------------------------------------------------------
// Cargamos la lista de películas al treewidget aplicando el patrón
// --------------------------------------------------------------------------------
itemCarpetaPeliculas.addChildRegisterList(pelis ,patternPeli);
// --------------------------------------------------------------------------------
// Recorremos las películas del treewidget para incluir los repartos
// --------------------------------------------------------------------------------
var agnos = 0;
for(var x = 0 ; x < itemCarpetaPeliculas.childCount(); ++x)
{
// Se lee la película del nodo en curso
var itemPeli = itemCarpetaPeliculas.child(x);
var curPeli = pelis.readAt(x);
// Se leen los repartos de la película
var reparto = curPeli.loadPlurals("REPARTOS_PELICULAS");
// Se calcula el total años de la película (como ejemplo de cálculo de totales)
agnos += curPeli.fieldToInt("AGNO");
// --------------------------------------------------------------------------------
// Se añaden los repartos como nodos hijos de la película aplicando el patrón
// --------------------------------------------------------------------------------
itemPeli.addChildRegisterList(reparto, patternReparto);
// --------------------------------------------------------------------------------
// Se añade un nodo hijo con el subtotal de personas de reparto de la película
// --------------------------------------------------------------------------------
var itemSubtotal = itemPeli.addChild();
itemSubtotal.setFlags(VTreeItem.NoItemFlags);
itemSubtotal.setBackgroundColor(0, 192, 192, 192);
itemSubtotal.setForegroundColor(0, 0, 0, 128);
itemSubtotal.setText(0, "Nº de personas: " + reparto.size());
itemSubtotal.setBackgroundColor(1, 192, 192, 192);
itemSubtotal.setForegroundColor(1, 0, 0, 128);
};
// --------------------------------------------------------------------------------
// Se añade un nodo con los totales generales (películas y años)
// --------------------------------------------------------------------------------
var itemTotalPeliculas = itemCarpetaPeliculas.addChild();
itemTotalPeliculas.setFlags(VTreeItem.NoItemFlags);
itemTotalPeliculas.setBackgroundColor(0, 192, 192, 192);
itemTotalPeliculas.setForegroundColor(0, 255, 0, 0);
itemTotalPeliculas.setText(0, "Nº de películas: " + pelis.size());
itemTotalPeliculas.setBackgroundColor(1, 192, 192, 192);
itemTotalPeliculas.setForegroundColor(1, 255, 0, 0);
itemTotalPeliculas.setText(1, "" + agnos);
itemTotalPeliculas.setTextAlignment(1, VTreeItem.AlignRight | VTreeItem.AlignVCenter);
// --------------------------------------------------------------------------------
// Se expande el ítem de totales generales creado y se ajuste el ancho de las columnas del treewidget
// --------------------------------------------------------------------------------
tree.expandItem(itemCarpetaPeliculas);
tree.resizeColumnToContents(0);
// --------------------------------------------------------------------------------
// Como ejemplo, se añaden los géneros de las películas como nodos principales al treewidget
// --------------------------------------------------------------------------------
var patternGenero = tree.createItemRegPattern();
patternGenero.setTable("CINE_DAT/GENEROS");
patternGenero.setIdFieldText(0, "NAME");
var generos = new VRegisterList(theRoot);
generos.setTable("CINE_DAT/GENEROS");
var a = new Array;
generos.load("ID", a);
tree.addTopLevelItemRegisterList(generos, patternGenero);
Última actualización
¿Te fue útil?