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?