Web de Velneo V7

Uso avanzado de objetos de interfaz

Uso avanzado de la rejilla
En este tutorial vamos a ver a fondo las posibilidades que nos ofrece el objeto rejilla; objeto que sirve para presentar listas de registros de las tablas.
Para este ejemplo vamos a partir de un proyecto de datos que contiene las tablas siguientes:

Con la estructura siguiente:

Profesiones:

Personas:

Este proyecto de datos será heredado por el proyecto de aplicación donde crearemos la rejilla. Para explicar este objeto nos centraremos en la creación de una rejilla para la tabla de Personas. Se tratará de crear una rejilla que muestre los datos siguientes:

Columna 1: Apellidos y nombre de la persona.
Columna 2: El nombre de la profesión de la persona y el icon de la profesión.
Columna 3: La edad de la persona.
Columna 4: Sus ingresos anuales, con dos decimales.
Columna 5: Observaciones sobre la persona.
Columna 6: Su foto.

Además, se quiere condicionar la visualización del la columna que muestra los datos económicos de la persona (Columna 3), para lo cual el proyecto incluye una variable global de tipo booelano, cuyo identificador es VER_DATOS_ECONOMICOS.
Creación de la rejilla

Para crear la rejilla, editaremos el proyecto de aplicación con Velneo vDevelop V7, pulsaremos la tecla Insert para abrir la galería de objetos y haremos doble clic sobre el sigiuente icono:

Esto provocará la apertura de un asistente para la creación de la rejilla:

En el primer paso del asistente seleccionaremos la tabla asociada a la rejilla y le daremos un nombre. Además, incluye tres eventos (alta, modificación y baja) en los que podremos asociar el formulario a utilizar en cada uno de ellos, es decir, podremos indicar qué formulario queremos usar para añadir un nuevo registro desde esa rejilla (alta), para editar un registro presentado en esa rejilla (modificación) y/o para borrar un registro contenido en la misma (baja); si no especificamos un formulario en uno de esos parámetros, en tiempo de ejecución no podrá dispararse desde la rejilla el evento correspondiente. Es decir, que si no asociamos un formulario para altas, no podremos añadir registros desde el evento de formulario de alta de esa rejilla.

Si pulsamos el botón , pasaremos al siguiente paso del asistente. En él haremos la selección de campos a incluir en la rejilla:

En la parte superior de la ventana se muestra la lista de campos de la rejilla y en la inferior se mostrarán los campos que vayamos seleccionando. En este punto podemos, o bien seleccionar todos los campos, pulsando el botón , o bien, ir seleccionándolos uno a uno, haciendo doble clic sobre el campo deseado o seleccionándolo en la lista superior y pulsando el botón . En este caso, lo haremos uno a uno, y seleccionaremos, según las indicaciones dadas al comienzo los campos siguientes:

Para la columna 1 (apellidos y nombre) seleccionaremos el campo NAME no seleccionaremos los campos correspondientes a los apellidos (APE_1 y APE_2) pues lo que nos interesa es mostrar los tres campos en una única columna.

Para la columna 2 (profesión) pulsar sobre al nodo que aparece a la izquierda del campo enlazado a PROFESIONES y seleccionar el campo NAME de la profesión:

Para la columna 3 (edad), no haremos ninguna selección, la crearemos más adelante.

Para la columna 4 (ingresos anuales) seleccionaremos el campo ING_ANUALES.

Para la columna 5 (observaciones) seleccionaremos el campo del mismo nombre.

Y para la columna 6 (foto) seleccionaremos el campo del mismo nombre.

Pulsar el botón para pasar al siguiente paso del asistente. En éste especificaremos la paleta de colores y fuentes a utilizar:

En este caso dejaremos los valores que se proponen por defecto. Pulsar el botón para pasar al siguiente paso del asistente:

Y pusar el botón para finalizar el asistente. Una vez hecho esto la rejilla será añadida al proyecto y editada:

En el panel de propiedades de Velneo vDevelop V7 se mostrarán las propiedades globales de la rejilla.
Propiedades de la rejilla
Veamos las propiedades de la rejilla que acabamos de crear.

Identificador: Etiqueta alfanumérica que identifica al objeto. El sistema establecerá como identificador el mismo que la tabla.
Nombre: Etiqueta alfanumérica que servirá como descriptor de la rejilla. Este dato lo hemos especificado en el primer paso del asistente.
Estilos: Podemos definir los estilos siguientes:

Privado que limita el acceso del usuario final a la rejilla. Lo dejaremos inactivo.
Heredable, que permite que la rejilla pueda ser usada cuando la caja sea heredada. Lo dejaremos inactivo.
Arrastrable para copiar: Cuando la rejilla va a ser el origen en un evento de drag and drop, si está activado este estilo, en ejecución los items arrastrados no serán quitados de la misma tras ejecutar el evento de drop. Ver el tutorial sobre drag & drop para ampliar información al respecto. Lo dejaremos inactivo.
Arrastrable para mover: Cuando la rejilla va a ser el origen en un evento de drag and drop, si está activado este estilo, en ejecución los items arrastrados serán quitados de la misma tras ejecutar el evento de drop. Ver el tutorial sobre drag & drop para ampliar información al respecto. Lo dejaremos inactivo.

Comentarios: En esta propiedad podremos escribir cualquier comentario aclaratorio sobre el uso de la rejilla.
Tabla asociada: Aparecerá asignada la tabla que habíamos seleccionado en el paso 1 del asistente.
Formulario de alta, Formulario de modificación y Formulario de baja: Estarán asignados los formularios que hayamos indicado en el paso 1 del asistente.
Tipo de menú de contexto: El menú de contexto es el que aparece cuando el usuario final hace clic con el botón derecho del ratón. Los valores posibles son:

Ninguno: La rejilla carecerá de menú de contexto.
Por defecto: La rejilla dispondrá de un menú de contexto creado automáticamente por el sistema.
Personalizado: El menú de contexto de la rejilla será un objeto menú contenido en el proyecto.
En este caso seleccionaremos el valor Por defecto.

Multiselección: Esta propiedad tiene dos valores posibles: Falso y Verdadero. Permitirá que en tiempo de ejecución se pueda realizar una selección múltiple de registros en la rejilla sobre los que se podrá lanzar una acción determinada, como por ejemplo un proceso o un evento de drag and drop. En este caso mantendremos el valor Falso.
Modo ver cabeceras: Permite configurar qué cabeceras de la rejilla serán visualizadas. Los valores posibles son:

Horizontal y vertical: Se mostrará horizontalmente, en la parte superior de la rejilla, un encabezado con los títulos de cada columna y verticalmente, en la parte izquierda de la rejilla, un encabezado que mostrará el valor del campo ID de cada registro:

Horizontal: Se mostrará horizontalmente, en la parte superior de la rejilla, un encabezado con los títulos de cada columna:

Este será el valor que seleccionemos.

Vertical: Se mostrará verticalmente, en la parte izquierda de la rejilla, un encabezado que mostrará el valor del campo ID de cada registro:

Ninguna: No se mostrará ningún encabezado:

Alto de cabecera: Altura, en píxels, que tendrá la sección de la cabecera de la rejilla. El valor por defecto es de 29 píxels. Lo dejaremos así.
Color de cara de cabecera: La cabecera de una rejilla es creada a modo de botón tridimensional. En esta propiedad seleccionaremos el color de la cara de la cabecera. Por defecto, se tomará el color para ventana de la paleta asociada a la rejilla. Junto al nombre del color se presenta una muestra del mismo, pulsar sobre ella para editarlo y o seleccionar otro color.
Color de luz de cabecera: En esta propiedad seleccionaremos el color de luz de la cabecera. Por defecto, se tomará el color para luz de la paleta asociada a la rejilla.
Color de sombra de cabecera: En esta propiedad seleccionaremos el color de la cara de la cabecera. Por defecto, se tomará el color para sombra de la paleta asociada a la rejilla.
Alto de cuerpo: Altura, en píxels, que tendrá la sección del cuerpo de la rejilla. El valor por defecto es de 21 píxels. Dado que en la rejilla queremos mostrar una foto de la persona, estableceremos una altura de 75 píxels.
Color de fondo de cuerpo: Esta propiedad establece el color de fondo del cuerpo. Por defecto, se tomará el color base de la paleta asociada a la rejilla. Dejaremos el valor creado por defecto.
Color de fondo par de cuerpo: Esta propiedad establece el color de fondo para las líneas pares del cuerpo. El color definido en la propiedad anterior será el que se use para las líneas impares. Por defecto, se tomará el color base alternativo de la paleta asociada a la rejilla. Dejaremos el valor creado por defecto.
Color de rejilla de cuerpo: Esta propiedad establece el color que se usará para pintar las líneas que delimitan cada celda de la rejilla. Por defecto, se tomará el color para texto ventana de la paleta asociada a la rejilla. Dejaremos el valor creado por defecto.
Toolbar: Permite asociar un objeto toolbar a la rejilla; esto implica que el cualquier punto que aparezca la rejilla ésta llevará embebida la toolbar que seleccionemos en este parámetro. Para ampliar información al respecto ir al tutorial de acciones, menús y toolbars
Longitud de columnas: Se trata de una propiedad de carácter informativo, no puede ser modificada. Muestra el ancho total, en píxels, de la rejilla.

En una rejilla, además de columnas, podemos crear otra serie de subobjetos, tales como variables locales, eventos, conexiones de eventos y drops. Para conocer su funcionamiento consultar los tutoriales sobre drag & drop y sobre variables locales, eventos y conexiones.
Propiedades de las columnas

Existen dos formas de editar las propiedades de una columna:

1) Seleccionando la columna cuyas propiedades queremos editar en el editor de rejillas.

2) A través del panel de subobjetos de la rejilla, haciendo doble clic sobre el subobjeto columna que se desea editar.

Iremos viendo, una por una, las propiedades de cada columna creada y las modificaciones que llevaremos a cabo en cada caso, pero antes de ello, vamos a recordar las columnas que pretendemos mostrar en esta rejilla:

Columna 1: Apellidos y nombre de la persona.
Columna 2: El nombre de la profesión de la persona y su icono.
Columna 3: La edad de la persona.
Columna 4: Sus ingresos anuales, con dos decimales.
Columna 5: Observaciones sobre la persona.
Columna 6: Su foto.

Columna 1: Apellidos y nombre de la persona

En el asistente habíamos seleccionado solamente el campo NAME de la tabla, por tanto, tendremos que modificar el contenido de esta para que muestre los tres datos, para ello editamos las propiedades de esta primera columna de cualquiera de los modos indicados anteriormente e iremos directamente a la propiedad Contenido cuerpo, y pulsaremos la tecla F4 o el botón para abrir el asistente para edición de fórmulas:

Modificaremos la fórmula para que en la columna se presente el nombre de la persona de la forma siguiente Apellido1 Apellido2, Nombre, por tanto, la fórmula final será:

#APE_1 + ” ” + #APE_2 + “, ” + #NAME

Para insertar un campo en la fórmula hacer doble clic sobre él en la lista de campos del asistente para edición de fórmulas.

Una vez escrita la fórmula, pulsaremos el botón para guardar los cambios en la misma y volver al panel de propiedades de la columna.

Vamos a aprovechar que el contenido de esta columna va a ser de anchura variable para cambiar el valor de la propiedad Tipo de ancho de esta columna. Como podemos observar el valor por defecto es Interactivo, esto quiere decir que en tiempo de ejecución la columna será presentada con el ancho dado en edición, pero el usuario podrá ampliar o reducirlo a su antojo. El valor que vamos a asignar a esta columna es Máximo disponible, esta propiedad hará que, en ejecución, la columna se expandirá o contrarerá según la anchura de la ventana o el control donde la rejilla esté situada. Este tipo permitirá que la rejilla ocupe siempre el ancho máximo disponible.

Además, modificaremos la propiedad Alineamiento vertical texto cuerpo con el valor Centrado, para que el texto quede centrado entre el borde superior e inferior de la celda.

Columna 2: El nombre de la profesión de la persona y su icono

En esta segunda columna, en la que se visualiza el campo #PROFESIONES.NAME, editaremos las siguientes propiedades:

Nombre escribiremos Profesión.
Icono cuerpo Seleccionaremos el campo ICONO del enlace a PORFESIONES:

En el caso de que en el proyecto hayamos declarado más de un idioma, si pulsamos la tecla F4 podremos escribir el nombre en todos los idiomas definidos.

Alineamiento vertical texto cuerpo: Centrado, para que el texto quede centrado entre el borde superior e inferior de la celda.

Columna 3: La edad de la persona

Este campo no existe en la tabla, pero podremos calcularla a partir de la fecha de nacimiento de la persona. Dado que en el asistente no habíamos seleccionado ningún campo para crear esta columna, vamos a crearla desde el propio editor de rejillas. Para ello seleccionaremos la columna que edita el campo #PROFESIONES.NAME y pulsaremos el botón (insertar columna). Al hacerlo, nos creará a la derecha de la columna seleccionada una nueva columna vacía:

Editaremos las propiedades de la nueva columna y estableceremos las sigiuentes:

Nombre: Edad.
Ancho: 50 píxels.
Alineamiento horizontal texto cabecera: Derecha, ya que se trata de un dato numérico.
Contenido cuerpo: En este parámetro declararemos la fórmula de cálculo de la edad, para ello abrimos el asistente para edición de fórmulas y, de en la lista de funciones estándar, dentro de la carpeta Fechas seleccionaremos la función age; al hacerlo se generará la fórmula siguiente: age(fecha), en ella, simplemente tendremos que cambiar el literal “fecha” por el campo FECHA_NAC, con lo cual la fórmula final será: age(#FECHA_NAC). Pulsar el botón para guardar la fórmula y volver al panel de propiedades de la columna.
Alineamiento horizontal texto cuerpo: Derecha, ya que se trata de un dato numérico.
Alineamiento vertical texto cuerpo: Centrado, para que el texto quede centrado entre el borde superior e inferior de la celda.

Columna 4: Sus ingresos anuales, con dos decimales

Editaremos las propiedades de esta columna y estableceremos las sigiuentes:

Alineamiento horizontal texto cabecera: Derecha, ya que se trata de un dato numérico.
Alineamiento horizontal texto cuerpo: Derecha, ya que se trata de un dato numérico.
Alineamiento vertical texto cuerpo: Centrado, para que el texto quede centrado entre el borde superior e inferior de la celda.
Dado que el campo en la tabla está definido como numérico y 2 decimales no será necessario aplicarle ningún tipo de formato. No obstante, si tuviésemos que hacelo usaríamos la función de fórmulas numberToString: numberToString(#ING_ANUALES, “f”, 2).

Recordemos además que ls visibilidad de esta columna debía condicionarse según el valor de una variable creda en el proyecto de datos. Para establecerla editaremos la propiedad Condición visible, pulsaremos la tecla F4 o el botón para abrir el asistente para edición de fórmulas y estableceremos la fórmula siguiente:
$1ozax4f1.vcd@VER_DATOS_ECONOMICOS
$1ozax4f1.vcd@VER_DATOS_ECONOMICOS es la variable global de tipo booelano creada en el proyecto de aplicación. De este modo, al ejecutar la aplicación si el valor de la variable es 1 la columna será visible, si es 0, no lo será.

Columna 5: Observaciones sobre la persona

En esta columna la única propiedad que modificaremos será Multilíneas cuerpo a la que le asignaremos el valor verdadero, ya que se trata de un campo de texto que puede tener más de una línea.

Columna 6: Su foto

En esta columna no será necesario modificar ninguna propiedad.

Ya temos lista la rejilla, si instanciamos el proyecto y lo ejecutamos, se verá como sigue:


Uso avanzado del árbol
El árbol visor de tablas arboladas es un objeto que sirve para presentar, en distintos niveles, la información de una tabla de datos Maestra con clave arbolada.
Este tipo de tabla tiene por defecto un campo ID de tipo Alfa-40 de 2 a 8 bytes (3 a 12 caracteres máximo), pero puede tener definido cualquier tipo de campo alfanumérico, y un índice correspondiente ID de clave única, además de un campo NAME de tipo Alfa-128 de longitud 35 bytes.

Será el usuario final de la aplicación quien establezca la codificación de los registros de la tabla. El número de caracteres por nivel será también una decisión del usuario final. Al tratarse de un campo alfanumérico, se podrán usar tanto letras como números para codificar los registros de la misma.

Así, todos los registros de la tabla se encuentran identificados de forma unívoca por medio del campo ID que tiene un valor que no se repite y cuyo límite máximo puede ir desde 3 a 12 caracteres, pudiendo de esta forma referenciar hasta 2.676.111.755.885.568.000 registros.

Las tablas maestras con clave arbolada son maestras de sí mismas enlazando por su campo ID que se abre en nuevas ramas por cada carácter.

Los árboles presentan la información de este tipo de tablas de una forma gráfica (se incluyen líneas, imágenes…), visualizando de forma clara los niveles en los que se encuentra estructurada la información.

El árbol siempre va asociado a una tabla de una caja de datos heredada. El flujo es Lista de la tabla asociada tanto para la entrada como para la salida.

Para este ejemplo vamos a partir de un proyecto de datos que contiene una única tabla, llamada FAMLILIAS de tipo maestro con clave arbolada, con la estructura siguiente:

Este proyecto de datos será heredado por el proyecto de aplicación donde crearemos el árbol.

En este tutorial vamos a crear un árbol para esta tabla de FAMILIAS y que tenga embebida una toolbar con comandos que permitan crear, editar o borrar registros de dicho árbol:


Creación del árbol

Para crear el árbol, editaremos el proyecto de aplicación con Velneo vDevelop V7, pulsaremos la tecla Insert para abrir la galería de objetos y haremos doble clic sobre el sigiuente icono:

El objeto será añadido al proyecto y le estableceremos las propiedades siguientes:

Identificador: Etiqueta alfanumérica que identifica al objeto. Le daremos el valor FAMILIAS.

Nombre: Etiqueta alfanumérica que servirá como descriptor del árbol. Es el texto que se presentará al usuario final de la aplicación para referenciar al árbol. Podemos definir una etiqueta por cada idioma presente en el proyecto.

Estilos: Podemos definir los estilos siguientes:

Privado que limita el acceso del usuario final a la rejilla.
Heredable, que permite que la rejilla pueda ser usada cuando la caja sea heredada.
Arrastrable para copiar: Cuando la rejilla va a ser el origen en un evento de drag and drop, si está activado este estilo, en ejecución los items arrastrados no serán quitados de la misma tras ejecutar el evento de drop.
Arrastrable para mover: Cuando la rejilla va a ser el origen en un evento de drag and drop, si está activado este estilo, en ejecución los items arrastrados serán quitados de la misma tras ejecutar el evento de drop.

En este caso no activaremos ninguno de los estilos.

Comentarios: Esta propiedad nos permite documentar el uso del árbol.

Tabla asociada: Seleccionaremos la tabla de FAMILIAS, creada en el proyecto de datos heredado.

Ver botones +-: Esta propiedad nos permite visualizar u ocultar los botones + – que aparecen en cada nodo del árbol y que permite desplegar y plegar una rama del árbol, respectivamente:

En este caso estableceremos el valor Verdadero.

Ver imágnes: Esta propiedad nos permite mostrar u ocultar un icono en cada rama del árbol.

En este caso estableceremos el valor Verdadero.

Ver campo código: Esta propiedad nos permite mostrar u ocultar el campo código de cada registro visualizado en cada rama del árbol.

En este caso estableceremos el valor Verdadero.

Orden alfabético: Esta propiedad nos permite ordenar el contenido del árbol alfabéticamente.

Formulario de alta, Formulario de modificación y Formulario de baja: Se trata de tres eventos (alta, modificación y baja) en los que podremos asociar el formulario a utilizar en cada uno de ellos, es decir, podremos indicar qué formulario queremos usar para añadir un nuevo registro desde ese árbol (alta), para editar un registro presentado en ese árbol (modificación) y/o para borrar un registro contenido en el árbol (baja); si no especificamos un formulario en uno de esos parámetros, en tiempo de ejecución no podrá dispararse desde el árbol el evento correspondiente. Es decir, que si no asociamos un formulario para altas, no podremos añadir registros desde el evento de formulario de alta de este árbol.

Es muy importante tener el cuenta a la hora de diseñar tanto el formulario de altas como el de modificación de una tabla arbolada que la codificación de los registros de la tabla (el valor del campo ID) no va a ser automática, sino que será realizada por el usuario final en tiempo de ejecución, por tanto, no debemos olvidar permitir editar dicho campo en dichos formularios.

Para un correcto seguimiento de este tutorial es aconsejable que los tres eventos tengan asociado un formulario.

Tipo de menú de contexto: El menú de contexto es el que aparece cuando el usuario final hace clic con el botón derecho del ratón. Los valores posibles son:

Ninguno: El árbol carecerá de menú de contexto. Este será el valor que asignaremos.
Por defecto: El árbol dispondrá de un menú de contexto creado automáticamente por el sistema.
Personalizado: El menú de contexto del árbol será un objeto menú contenido en la caja.

Toolbar: Esta propiedad permite asociar una toolbar al árbol. Dado que aún no la hemos creado, por el momento dejaremos vacío esta propiedad.

En un árbol, además de columnas, podemos crear otra serie de subobjetos, tales como variables locales, eventos, conexiones de eventos y drops. Para conocer su funcionamiento consultar los tutoriales sobre drag & drop y sobre variables locales, eventos y conexiones.

Creación de la toolbar
Al comienzo de este tutorial indicábamos que ibamos a crear un árbolárbol con una toolbar embebida que nos permita añadir, editar y/o borrar registros del árbol. Para ello necesitaremos crear tres acciones, una para llamar al formulario de altas, otra para llamar al de modificación y otra para llamar al de bajas, y una toolbar
Acción: Alta de ficha

Para crear una acción hacer doble clic sobre el icono de la galería de objetos (Tecla Insert).

Estableceremos las propiedades siguientes:

Identificador: NUEVA FAMILIA.
Nombre: Nueva familia
Tabla asociada: Seleccionaremos la tabla de FAMILIAS.
Texto de estado: Nueva familia.
Texto de tooltip: Nueva familia.
Texto de ayuda: Nueva familia.
Texto de ayuda: Nueva familia.
Comando: Ficha: Formulario de alta
Formulario: .Genérico.

Esta acción presentará el formulario de altas asociado al árbol.

Acción: Modificación de ficha

Para crear una acción hacer doble clic sobre el icono de la galería de objetos (Tecla Insert).

Estableceremos las propiedades siguientes:

Identificador: EDITAR FAMILIA.
Nombre: Editar familia
Tabla asociada: Seleccionaremos la tabla de FAMILIAS.
Texto de estado: Editar familia.
Texto de tooltip: Editar familia.
Texto de ayuda: Editar familia.
Texto de ayuda: Editar familia.
Comando: Ficha: Formulario de modificación.

Esta acción editará la ficha que el usuario seleccion en el árbol usando el formulario de modificación asociado al árbol.

Acción: Baja de ficha

Para crear una acción hacer doble clic sobre el icono de la galería de objetos (Tecla Insert).

Estableceremos las propiedades siguientes:

Identificador: BORRAR FAMILIA.
Nombre: Borrar familia
Tabla asociada: Seleccionaremos la tabla de FAMILIAS.
Texto de estado: Borrar familia.
Texto de tooltip: Borrar familia.
Texto de ayuda: Borrar familia.
Texto de ayuda: Borrar familia.
Comando: Ficha: Formulario de baja.

Esta acción permitirá eliminar la ficha que el usuario seleccione en el árbol usando el formulario de bajas asociado al árbol.

Una vez creadas las acciones, crearemos la toolbar.

Creación de la toolbar

Para crearla hacer doble clic sobre el icono de la galería de objetos (Tecla Insert) y estableceremos las propiedades siguientes:

Identificador: FAMILIAS.
Nombre: Familias.
Estilo: Texto.

Una vez establecidas las propiedades, estableceremos el contenido de la toolbar, es decir, las opciones de alta, modificación y baja de familia. Es lo que se llama Lanzadores de acción.

Lanzadores de acción

Incluiremos las acciones a disparar desde esta toolbar a través del editor de toolbars, que es abierto en el panel central de Velneo vDevelop:

En la parte superior del mismo se muestra una previsualización de la toolbar y en la parte inferior se muestran dos paneles. En el izquierdo se muestra la lista de acciones disponibles y en el derecho la lista de acciones que seleccionemos.

Para añadir una acción a una toolbar hacer doble clic sobre ella en el panel de acciones disponibles o seleccionarla y pulsar el botón . Esta será añadida al fina de la lista de acciones del panel de acciones seleccionadas y el botón será añadido a la previsualización de la toolbar.

Tendremos que añadir las tres acciones creadas anteriormente:

Una vez creada la toolbar, el último paso será añadir ésta al árbol, para ello editamos nuevamente el árbol FAMILIAS y en la propiedad Toolbar seleccionaremos la toolbar FAMILIAS y en la Posición de la toolbar seleccionamos el valor Arriba..
Uso avanzado del formulario
Un formulario es el objeto de proyecto de aplicación que permite introducir, modificar y ver los distintos campos de una ficha o registro de una tabla por medio de subobjetos denominados controles. Para ello debe tener una tabla asociada de la que podrá presentar los registros.

Como entrada y salida el formulario tiene Ficha de la tabla asociada.

También puede ser usado para incializar valores que se usarán como contenidos iniciales en búsquedas.

Sin origen, es decir, sin tabla asociada podemos usar el formulario como menú tipo formulario pudiendo usar controles con contenido, lanzar opciones o editar variables globales, mostrar dibujos, etc.
A lo largo de este tutorial iremos explicando de forma práctica, los aspectos más destacables de este objeto.
Controles básicos
En este tutorial conoceremos el uso de los distintos tipos de controles que nos permiten interactuar con la base de datos.
Para ello partiremos de un proyecto de datos que contiene las tablas siguientes:

En este tutorial vamos a centrarnos en la creación del formulario para la tabla de Artículos:

Para crearlo hacer doble clic sobre el icono de la galería de objetos (Tecla Insert).

Esto hará que se abra un asistente para su creación:

En esta primera estapa del asistente especificaremos los parámetros siguientes:

Tabla: ARTICULOS.
Nombre: Artículos.
Generar layouts: Activaremos esta opción para que el formulario a crear contemple layouts.
Bloque de botones: Activaremos esta opción para que el formulario a crear contenga un bloque con los típicos botones de “Aceptar”, “Cancelar”, etc.
Posición: En esta propiedad indicaremos en qué posición será situado el bloque de botones, seleccionaremos el valor Abajo.

En la parte central del formulario especificaremos qué plantilla usaremos para situar los controles dentro del mismo, es decir, de qué forma vamos a situar los controles dentro del formulario, en este caso seleccionaremos la plantilla:

Pulsar el botón para pasar al siguiente paso del asistente. En este segundo paso tendremos que seleccionar los campos que irán en cada bloque que va a generarse en el formulario. Por cada bloque existirá una pestaña y en ella se indicarán los campos del mismo:

Para añadir un campo o una selección de campos en un bloque pulsaremos el botón . Para añadir todos los campos de la tabla en una pestaña pulsaremos el botón . En este caso, haremos la selección de varios campos en cada bloque. Así, en el Bloque 1 incluiremos los campos:

ID
NAME
FAMILIAS
FECHA_ALTA
PRECIO
TIPO
INACTIVO

Para añadirlos pulsar el botón , ésto hará que se abra una ventana con la lista de campos de la tabla, con una casilla de verificación a la izquierda de cada uno. Activar la casilla de cada uno de estos campos y pulsar el botón “Aceptar” de dicha ventana:

En la propiedad Distribución seleccionaremos el valor Etiq. al lado edición alin, izquierda,es decir, las etiquetas serán creadas al lado del control edición correspondiente y los textos de las mismas serán alineados a la izquierda del control.

Dejaremos inactiva la propiedad Estirar controles. Si esta propiedad está activa, todos los controles de un bloque serán creados con la misma longitud; si está inactiva serán creados según el tipo y longitud del campo que editen.

En el Bloque 2 incluiremos el campo FOTO y en el Bloque 3 incluiremos el campo OBSERVACIONES. En ambos, en la propiedad Distribución seleccionaremos el valor Etiq. encima de edición para que nos cree la etiqueta del campo encima de su control de edición correspondiente y dejaremos inactiva la propiedad Estirar controles.

Por último, en la pestaña Botones:

En la propiedad Alineación horizontal seleccionaremos el valor Derecha, para que los botones sean alineados a la derecha del formulario.

Además, añadiremos un nuevo botón, para ello pulsamos el botón que aparece junto al botón y seleccionaremos la opción Eliminar.

Pulsaremos el botón y llegaremos a la ventana final del asistente:

Pulsar el botón “Finalizar” para terminar el asistente. Una vez hecho esto el formulario será añadido a nuestro proyecto y editado:

De dicho formulario quitaremos los controles marcados en la captura de pantalla siguiente:

Con lo que el formulario finalmente quedará como sigue:

A continuación veremos qué tipos de controles ha usado el asistente.

Para las etiquetas de campo:

Se ha usado el control Nombre de campo. En la propiedad Campo de dicho control seleccionaremos el campo de la tabla cuyo nombre queremos obtener. Esto lo que hará será devolver el parámetro del mismo nombre del campo, declarado en el proyecto de datos heredado. Si en el proyecto de datos hemos declarado más de un idioma, esta etiqueta mostrará el dato correspondiente al idioma seleccionado.

Para los campos de tipo alfanumérico:

Se ha usado el control Edición. Este control se usa principalmente para la edición del contenido de campos o variables. El dato a editar lo especificaremos en la propiedad Contenido. Para campos enlazados a maestro, el dato a editar será el campo ID o el campo NAME de la tabla enlazada. En tiempo de ejecución, el sistema añadirá al control unos microescrollers -botones arriba y abajo- al control para que el usuario pueda navegar por la tabla maesta para seleccionar el registro deseado:

Dichos controles tienen establecidas, además, las propiedades siguientes:

Seleccionable con tab: Verdadero. Permite que el control sea accesible cuando se use el tabulador o el Intro para moverse de un control a otro dentro del formulario.

Condición visible: Está vacío, lo cual indica que el control estará siempre visible. En este parámetro podríamos, mediante una fórmula que podremos escribir usando el asistente para edición de fórmulas, establecer una condición que deba cumplirse para que el control sea visible; es decir, si no se cumple, el control no será visible.

Condición activo: Está vacío, lo cual indica que el contenido del control será siempre editable. En este parámetro podríamos, mediante una fórmula que podremos escribir usando el asistente para edición de fórmulas, establecer una condición que deba cumplirse para que el contenido del control pueda ser modificado; es decir, si no se cumple, el control no será editable.

Sólo lectura: Permite hacer que el contenido del control pueda ser visualizado pero no modificado. En este caso está vacío, lo cual implica que el control es de lectura/escritura. En esta propiedad, si queremos que esté activa, tendremos que especificar una condición que devuelva True.

Para el campo de tipo fecha:

Se ha usado el control Fecha. Este control se exclusivamente para la edición de campos o variables de tipo fecha. El dato a editar lo especificaremos en la propiedad Contenido. Si queremos que el control incluya un botón que permita desplegar un calendario para la selección de la fecha, lo configuraremos en la propiedad Opciones. No es posible usar un control de tipo Edición para editar campos o variables de tipo fecha.

Para los campos de tipo numérico:

Se ha usado el control MicroScrollers. Este tipo de control es como un control de edición pero específico para la edición de datos numéricos. Iincorpora unos microescrollers (botones arriba y abajo) embembidos, que permitirán modificar el contenido del campo o varible asociado, incrementando/decrementando su valor, por cada pulsación, en una unidad.

Para el campo enlazado a la tabla estática (TIPO):

Se ha usado el control Combo box. Este tipo de control permite ver los registros de una tabla estática a través de una lista desplegable y seleccionar uno:

El campo a editar se establecerá en la propiedad Contenido y especificaremos el campo enlazado a la tabla estática (#TIPO) y no el nombre de la misma (#TIPO.NAME).

Para el campo de tipo booleano (INACTIVO):

Se ha usado el control Botón de check (checkbox). Si el check está activo el valor del campo será 1, y si está inactivo, 0. El campo a editar se establecerá en la propiedad Contenido y tendrá que ser un campo de tipo booleano, en este caso el campo #INACTIVO).

Para el campo de tipo objeto teto enriquecido (OBSERVACIONES):

Se ha usado el control Caja de texto enriquecido. El campo a editar se establecerá en la propiedad Contenido, en este caso el campo #OBSERVACIONES). Si queremos activar a este control barras de herramientas para poder modificar fuentes, estilos, etc. tendremos que modificar los valores de las propiedades Barra de herramientas, Estilo de texto, Formato, Alineación y/o Numeración y viñetas.

Para la foto del artículo el:

Se ha usado el control Objeto dibujo que, como su propio nombre indica, permite editar un campo de tipo objeto dibujo. El campo a editar se establecerá en la propiedad Campo objeto, en este caso el campo #FOTO) de la tabla de ARTICULOS.

En el formulario, a su vez, se han generado layouts para distribuir los controles contenidos en el mismo:

La parte superior del formulario (bloques 1 y 2) está compuesto por un layout de tipo grid (bloque 1) y un layout de tipo vertical (bloque 2) ambos enmarcados con otro layout que los distribuye horizontalmente:

La parte inferior del formulario (bloque 3) está compuesto por un layout vertical (campo OBSERVACIONES).

Además, se incluye otro layout horizontal que contiene los botones “Aceptar”, “Cancelar” y “Eliminar”.

Por último, el formulario tiene establecido un layout de tipo vertical que lo que hace es distribuir la parte superior de formulario (bloque 1 y 2), la inferior (bloque 3) y el bloque de botones de forma vertical:


Agrupación de formularios
En este tutorial conoceremos la forma de agrupar formularios dentro de otro formulario.
Para ello partiremos de un proyecto de datos que contiene las tablas siguientes:

En este tutorial vamos a centrarnos en la creación de un formulario para la tabla de Artículos con varias pestañas:

Pestaña 1:

Pestaña 2:

Pestaña 3:

Para crearlo necesitaremos cuatro formularios, uno para generar el contenido de cada pestaña del separador y otro para generar el formulario que lo engloba.

Formulario de datos básicos

Para crearlo haremos doble clic sobre el icono de la galería de objetos (Tecla Insert).

Esto hará que se abra un asistente para su creación:

En esta primera etapa del asistente especificaremos los parámetros siguientes:

Tabla: ARTICULOS.
Nombre: Datos básicos.
Generar layouts: Activaremos esta opción para que el formulario a crear contemple layouts.
Bloque de botones: Desactivaremos esta opción ya que este subformulario no va a contener botón alguno.

De la lista de plantillas disponible seleccionaremos la siguiente:

Pulsar el botón para pasar al siguiente paso del asistente. En este segundo paso tendremos que seleccionar los campos que irán en cada bloque que va a generarse en el formulario. En este caso se trata de un único bloque.

Para añadir un campo o una selección de campos en un bloque pulsaremos el botón . Para añadir todos los campos de la tabla en una pestaña pulsaremos el botón . En este caso, haremos la selección de varios campos en cada bloque. Así, en el Bloque 1 incluiremos los campos:

FAMILIAS
FECHA_ALTA
PRECIO
TIPO
INACTIVO

Para añadirlos pulsar el botón , ésto hará que se abra una ventana con la lista de campos de la tabla, con una casilla de verificación a la izquierda de cada uno. Activar la casilla de cada uno de estos campos y pulsar el botón “Aceptar” de dicha ventana:

Pulsar el botón para ir al siguiente paso del asistente:

Pulsar el botón “Finalizar” para salir del asistente y crear el formulario.

El formualrio será añadido al proyecto y editado:

Formulario de observaciones

Seguiremos los mismos pasos que hemos indicado para crear el formulario de Datos básicos, pero dándole el nombre Observaciones y seleccionando solamente el campo del mismo nombre:

Al formulario generado le quitaremos el control correspondiente al nombre de campo, quedando únicamente el control Caja de texto enriquecido:

Formulario para la foto

Seguiremos los mismos pasos que hemos indicado para crear el formulario de Obesvaciones, pero dándole el nombre Foto y seleccionando solamente el campo del mismo nombre:

Formulario principal

Para crearlo haremos doble clic sobre el icono de la galería de objetos (Tecla Insert).

Esto hará que se abra un asistente para su creación:

En esta primera etapa del asistente especificaremos los parámetros siguientes:

Tabla: ARTICULOS.
Nombre: Artículo.
Generar layouts: Activaremos esta opción para que el formulario a crear contemple layouts.
Bloque de botones: Activaremos esta opción para que incluya los botones “Aceptar” y “Cancelar”.
Posición: Seleccionaremos el valor Abajo, para que el bloque de botones sea creado en la parte inferior del formulario.

De la lista de plantillas disponible seleccionaremos la siguiente:

Pulsar el botón para pasar al siguiente paso del asistente. En este segundo paso tendremos que seleccionar los campos que irán en cada bloque que va a generarse en el formulario. En este caso solamente incluiremos datos en el Bloque 1 ya que en el Bloque 2 es donde posteriormente incluiremos los subformularios.

En la pestaña Bloque 1 asignaremos el valor Etiqueta encima de edición en la propiedad Distribución.

Para añadir un campo o una selección de campos en un bloque pulsaremos el botón . Para añadir todos los campos de la tabla en una pestaña pulsaremos el botón . En este caso, haremos la selección de varios campos en cada bloque. Así, en el Bloque 1 incluiremos los campos:

ID
NAME

Para añadirlos pulsar el botón , ésto hará que se abra una ventana con la lista de campos de la tabla, con una casilla de verificación a la izquierda de cada uno. Activar la casilla de cada uno de estos campos y pulsar el botón “Aceptar” de dicha ventana.

Tal y como habíamos comentado anteriormente, dejaremos vacío el Bloque 2 y pasaremos directamente a la pestaña Botones y en la propiedad Alineación horizontal asignaremos el valor Derecha, para que los botones sean alineados a la derecha del formulario.

Además, añadiremos un nuevo botón, para ello pulsamos el botón que aparece junto al botón y seleccionaremos la opción Eliminar.

Pulsaremos el botón y llegaremos a la ventana final del asistente:

Pulsar el botón “Finalizar” para terminar el asistente. Una vez hecho esto el formulario será añadido a nuestro proyecto y editado:

Creación del separdor de pestañas

El último paso será crear el control que nos permita incrustar los otros tres formularios dentro de éste, para ello podremos usar, o bien el control Separador de subformularios, o bien el control Caja de formularios ya que ambos permiten incluir varios formularios dentro del mismo área, lo único que cambia es la forma:

Separador:

Caja:

En este caso usaremos el control Separador de subformularios. Para crearlo pulsar sobre el botón de la barra de controles del editor de formularios; el control lo crearemos dentro del layout creado por el asistente:

Para añadir la primera pestaña (datos básicos), con este control seleccionado, pulsaremos el botón de la barra de herramientas del panel de subobjetos y, en el menú que se despliega, seleccionar la opción Subcontrol, una vez hecho esto se activará la pestaña Subcontroles en el panel de subobjetos, conteniendo el nuevo elemento creado; haremos doble clic sobre él para editar sus propiedades, y asignaremos las siguientes:

Identificador: DATOS_BASICOS.
Nombre: Datos básicos. Este valor será el que se use como título de la pestaña.
Formulario: DATOS_BASICOS.
Si queremos mostrar en la pestaña, además del título, un icono, lo indicaremos en la propiedad Icono; podrá ser tanto un dibujo declarado en el proyecto en curso o en cualquiera de los proyectos heredados.
Si queremos que la pestaña sea mostrada o no en función de una condición, entonces especificaremos dicha condición en la propiedad Condición visible.

Una vez establecidas las propiedades, el subformulario será mostrado dentro del control en el editor de formularios:

Repetiremos esta misma operación para crear los otros dos subformularios (Observaciones y Foto), con lo que el formulario final será:

El formulario ya está listo para ser usado.
Uso del control objeto
En este tutorial conoceremos el uso de un control Objeto, que nos permite incluir dentro de un formulario una acción, desde la que podremos disparar tanto objetos aparcables (Rejilla, formulario, multivista, etc.) como disparables (búsqueda).
Para ello partiremos de un proyecto de datos que contiene las tablas siguientes:

En este tutorial vamos a centrarnos en la creación del formulario para la tabla de Familias:

Para crearlo hacer doble clic sobre el icono de la galería de objetos (Tecla Insert).

Esto hará que se abra un asistente para su creación:

En esta primera estapa del asistente especificaremos los parámetros siguientes:

Tabla: FAMILIAS.
Nombre: Familia.
Generar layouts: Activaremos esta opción para que el formulario a crear contemple layouts.
Bloque de botones: Activaremos esta opción para que el formulario a crear contenga un bloque con los típicos botones de “Aceptar”, “Cancelar”, etc.
Posición: En esta propiedad indicaremos en qué posición será situado el bloque de botones, seleccionaremos el valor Abajo.

En la parte central del formulario especificaremos qué plantilla usaremos para situar los controles dentro del mismo, es decir, de qué forma vamos a situar los controles dentro del formulario, en este caso seleccionaremos la plantilla:

Pulsar el botón para pasar al siguiente paso del asistente. En este segundo paso tendremos que seleccionar los campos que irán en cada bloque que va a generarse en el formulario. Por cada bloque existirá una pestaña y en ella se indicarán los campos del mismo:

Para añadir un campo o una selección de campos en un bloque pulsaremos el botón . Para añadir todos los campos de la tabla en una pestaña pulsaremos el botón . En este caso, haremos la selección de todos los campos en el Bloque 1 y dejaremos vacío el Bloque 1, que será donde añadiremos a posteriori el control objeto.

Dejaremos inactiva la propiedad Estirar controles. Si esta propiedad está activa, todos los controles de un bloque serán creados con la misma longitud; si está inactiva serán creados según el tipo y longitud del campo que editen.

Por último, en la pestaña Botones:

En la propiedad Alineación horizontal seleccionaremos el valor Derecha, para que los botones sean alineados a la derecha del formulario.

Además, añadiremos un nuevo botón, para ello pulsamos el botón que aparece junto al botón y seleccionaremos la opción Eliminar.

Pulsaremos el botón y llegaremos a la ventana final del asistente:

Pulsar el botón “Finalizar” para terminar el asistente. Una vez hecho esto el formulario será añadido a nuestro proyecto y editado:

Recordemos que en el control objeto queremos presentar una rejilla con los artículos de la familia. Para ello necesitaremos crear dos objetos en nuestro proyecto: Una rejilla (haz clic sobre el enlace para saber cómo crearla) y Un proceso.

Para crear el proceso hacer doble clic sobre el icono de la galería de objetos (Tecla Insert) y establecer las propiedades siguientes:

Identificador: CARGA_ARTICULOS_FAMILIA.

Estilos: Cargar los artículos de una familia

Tabla asociada: En esta propiedad tenemos que indicar cuál va a ser el origen del proceso, dado que se trata de un incluir una lista de artículos en el formulario de la familia el origen será la tabla de FAMILIAS.

Origen: Según lo dicho anteriormente, el origen será Ficha.

Tabla destino: Esta propiedad nos permite establecer la salida del proceso. En este caso será la tabla de ARTICULOS.

Destino: el destino será Lista (de artículos).

Y el contenido del proceso será:

(Ver: Cargar plurales y Añadir lista a la salida).

Creación del control objeto

Una vez creados la rejilla de artículos y el proceso, solamente nos quedará crear el control objeto, para ello editaremos el formulario FAMILIA que hemos creado, en la barra de controles del editor de formularios hacemos clic sobre el icono y lo crearemos dentro del layout que está vacío en la parte inferior del formulario:

Y establecemos las propiedades siguientes:

Objeto 1: Seleccionar el proceso CARGA_ARTICULOS_FAMILIA.
Objeto 2: Seleccionar la rejilla ARTICULOS.

Una vez hecho esto la rejilla será mostrada dentro del control en el editor de formularios:

Finalmente, pulsaremos el botón de la barra de maquetación del editor de formularios para aplicar layouts nuevamente a los controles del formulario:


Uso avanzado del informe
Los informes son los objetos que se utilizan habitualmente para enviar información de tablas de datos a una impresora o a un documento de disco.

A través de este tutorial vamos a conocer cómo podemos construir un informe de facturas.

El informe podrá ser usado tanto para imprimir una como varias facturas.

Tendrá una página inicial en la que se mostrará un título, la fecha y la hora de impresión del informe.

Un encabezado en cada página que se imprima en el que se muestre ese título, fecha y hora.

En las siguientes páginas se imprimirá cada factura de la forma siguiente:

Un encabezado de factura en el que se mostrarán:

Logotipo y dirección de nuestra empresa.
Nombre y dirección del cliente al que se le emite la factura.
Fecha de la factura.

Las líneas de cada factura en el que se mostrarán los datos de cada línea de la factura:

Código, foto, nombre y precio del artículo.
Número de unidades vendidas.
Total de la línea.

Además, la línea de factura podrá incluir o no comentarios, que también serán impresos en el informe, bajo el nombre del artículo.

Un pie de factura en el que se mostrará el total de la factura.

Un pie de página en el que se mostrará el número de página y el número total de páginas del informe Ejemplo: Página 1 de 10.

Un pie de informe en el que se mostrará el importe total acumulado de las facturas del informe.

Para ello partiremos de un proyecto de datos con la siguiente estructura de tablas:

Cada tabla contendrá los campos siguientes:

Clientes

Artículos

Facturas

Líneas de facturas

Esta tabla es submaestra de la de FACTURAS y tiene programada una actualización a la tabla de Facturas, en la que se acumula el total de la línea en el campo TOTAL de la factura.

Dado que desde una tabla tenemos acceso tanto a los campos de la misma como de sus maestros, el origen del informe será esta tabla.

Además, hemos creado los objetos siguientes:

Un dibujo llamado LOGO_EMPRESA que contendrá el logotipo de la empresa emisora de las facturas.

Dos variables alfabéticas con persistencia en disco, una que contendrá el nombre de la empresa emisora de las facturas (NOMBRE_EMPRESA) y otra que contendrá su dirección (DIRECCION).
Creación del informe
Para crear el informe tendremos que crear un proyecto de aplicación que herede del proyecto de datos donde hemos definido la estructura de tablas.

Los informes pueden estructurarse en varias partes o secciones. Una sección es una división dentro de un informe que define un área independiente y programable de éste.
Para crear un objeto de este tipo hacer doble clic sobre el icono de la galería de objetos (Tecla Insert).

Una vez hecho esto se abrirá e el panel central de Velneo vDevelop V7 un editor desde el que podremos ir componiendo de forma gráfica el informe:

Lo primero que haremos será establecer las propiedades de este objeto. Serán:

Identificador: FACTURAS.
Nombre: Facturas.
Tabla asociada: LINEAS_DE_FACTURA.
Salida por defecto: En este parámetro configuraremos cuál va a ser la salida por defecto del ojeto. Los valores posibles son:

Cuadro de selección de impresora: Siempre que se ejecute el informe se presentará la ventana de selección de impresora del sistema operativo para que el usuario pueda seleccionar la impresora por la que imprimirlo.
Impresora por defecto: Siempre que se ejecute el informe será enviado a la impresora por defecto del sistema operativo.
Impresora lógica: Siempre que se ejecute el informe será enviado la impresora del sistema que el usuario haya asociado a una impresora lógica definida en el proyecto en curso o en los proyectos heredados.
Presentación preliminar: Siempre que se ejecute el informe no será enviado directamente a una impresora sino que se hará una previsualización del mismo.
Fichero: Siempre que se ejecute el informe será guardado en disco en un archivo con formato PDF (Portable Document Format) o PS (Postscript).
En este caso seleccionaremos el valor Impresora por defecto
Impresora lógica: Esta propiedad la dejaremos vacía; solamente sería necesario cumplimentarla en el caso de haber seleccionado el valor Impresora lógica en la propiedad Salida por defecto.
Ruta del fichero: Esta propiedad la dejaremos vacía; solamente sería necesario cumplimentarla en el caso de haber seleccionado el valor Fichero en la propiedad Salida por defecto.
Resolución PDF/PS: Esta propiedad la dejaremos vacía; solamente sería necesario cumplimentarla en el caso de haber seleccionado el valor Fichero o Presentación preliminar en la propiedad Salida por defecto.
Orientación: Vertical.
Tamaño de papel: A4
Margen: Estableceremos el valor Ninguno; de este modo, al informe sólo se le aplicarán los márgenes mínimos de la impresora. Estos márgenes son invariables y el usuario final no podrá modificarlos.
Columnas de detalle: Dejaremos el valor por defecto (1). Esta propiedad es muy útil para crear informes de etiquetas; por ejemplo, si fuesemos a crear etiquetas de tres columnas, especificaríamos 3 en esta propiedad.
Modo de presentación preliminar: Esta propiedad la dejaremos vacía; solamente sería necesario cumplimentarla en el caso de haber seleccionado el valor Presentación preliminar en la propiedad Salida por defecto.
Zoom presentación preliminar: Esta propiedad la dejaremos vacía; solamente sería necesario cumplimentarla en el caso de haber seleccionado el valor Presentación preliminar en la propiedad Salida por defecto.
Ancho de página: Esta propiedad la dejaremos vacía; solamente sería necesario cumplimentarla en el caso de haber seleccionado el valor Presentación preliminar en la propiedad Salida por defecto.

Una vez establecidas las propiedades del informe, pasaremos a crear los diferentes componentes del mismo. Recordemos que el informe va a constar de:

Encabezado de informe (Cabecera de informe)
Encabezado de página (Cabecera de página)
__Encabezado de factura (Cabecera de agrupamiento)
____Líneas de factura (Detalle)
Pie de página
__Pie de factura (Pie de agrupamiento)
Pie de informe

Cada una de estas partes se corresponde con una sección de informe.
Creación de la cabecera del informe
Esta sección será impresa una única vez en el informe, al comienzo del mismo. Es decir, será la primera página del informe.

En ella recodemos que se va a mostrar:

Un título.
La fecha de impresión del informe.
La hora de impresión del informe.

En el editor de informes podemos comprobar que el informe ha sido creado con una sección de tipo detalle; vamos a aprovechar la misma para crear nuestro encabezado de informe, para ello hacemos doble clic sobre la misma en el panel de subobjetos del editor de informes para editar sus propiedades:

Y estableceremos las siguientes:

Identificador: ENCABEZADO-DE_INFORME.
Nombre: Encabezado de informe.
Tipo de sección: Cabecera de informe: Lo contenido en esta sección será impreso una única vez al comienzo del informe.
Ancho: 800.
Alto: 400.
Salto de página: Permite especificar una condición para que la sección fuerce un salto de página tras su impresión. En este parámetro tendremos que especificar una condición, si se cumple (TRUE) se forzará el salto de página y si no se cumple, no se forzará. En este caso nos interesará fozar siempre un salto de página tras imprimir esta sección, por tanto estableceremos una condición que se cumpla siempre; como por ejemplo, 1.

Para incluir el título del informe usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Nombre: Informe de facturas.
Fuente: Dejaremos el tipo de fuente que nos propone y solamente modificaremos su Tamaño a 42.
Alineamiento horizontal: Seleccionaremos el valor Centrado, de modo que el texo quede centrado horizontalmente en la página.

Para incluir la fecha y la hora añadiremos otro control de tipo Texto. Dado que este dato no va a ser fijo como el anterior sino variable, estableceremos las propiedades siguientes:

Contenido: A través del asistente de fórmulas seleccionaremos la Funciones estándar currentDateTime; ésta devuelve la fecha y hora actual.
Fuente: Dejaremos el tipo de fuente que nos propone y solamente modificaremos su Tamaño a 20.
Alineamiento horizontal: Seleccionaremos el valor Centrado, de modo que el texo quede centrado horizontalmente en la página.

Por último, haremos que ambos textos ocupen, horizontalmente, todo el área de la sección:


Creación de la cabecera de página
Esta sección será impresa al comienzo de cada página del informe.

En ella recodemos que se va a mostrar:

El título del informe.
La fecha de impresión del informe.
La hora de impresión del informe.

Para añadir una nueva sección al informe seleccionaremos el informe en el explorador de proyectos de Velneo vDevelop y pulsaremos el botón del panel de sub-objetos y seleccionamos la opción Sección:

Al final de la lista de secciones del informe se habrá añadido una nueva sección con el identificador Sección. Haremos doble clic sobre ella para editar sus propiedades:

Y estableceremos las siguientes:

Identificador: ENCABEZADO-DE_PAGINA.
Nombre: Encabezado de página.
Tipo de sección: Cabecera de página: Lo contenido en esta sección será impreso en cada página del informe.
Ancho: 800.
Alto: 20.

Para incluir el contenido de esta sección usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: Dado que la fecha y la hora serán datos dinámicos, usamos esta propiedad ya que nos permite usar una fórmula como contenido del control. Estableceremos la fórmula siguiente: “Informe de facturas ( ” + currentDateTime() + ” )”.
Fuente: Dejaremos el tipo de fuente que nos propone y solamente modificaremos su Estilo a Italic o cursiva.
Alineamiento horizontal: Seleccionaremos el valor Derecho, de modo que el texo quede alineado a la derecha en la página.

Por último, haremos que el texto ocupe, horizontalmente, todo el área de la sección:


Creación del agrupamiento por factura
Tal y como habíamos establecido al comienzo de este tutorial, en el informe se imprimirá cada factura por separado, es decir, por cada factura se imprimirán sus datos de cabecera (cliente, fecha, etc.), sus líneas y su pie (totales de la factura). Para poder hacer esto es necesario que en nuestro informe creemos un Agrupamiento.

El agrupamiento fuerza rupturas en el informe por el cambio del contenido de un campo.

Un agrupamiento implica la ordenación de los registros a imprimir en el informe por dicho campo.
Para crear el agrupamiento seleccionaremos el informe en el explorador de proyectos de Velneo vDevelop, pulsaremos el botón del panel de subobjetos y seleccionaremos la opción Nuevo agrupamiento:

Éste será mostrado dentro de la pestaña Agrupamientos del panel de subobjetos:

Haremos doble clic sobre él para editar sus propiedades:

Y estableceremos las siguientes:

Identificador: FACTURA.
Nombre: Factura.
Campo: Esta propiedad nos permite establecer cuál será el campo que usaremos para agrupar el informe. Dado que queremos agrupar por factura, usaremos el campo ID (Código) del enlace a la tabla de Facturas: #FACTURAS.ID.
Orden: Ascendente, para que ordene correlativamente, de menor a mayor, por el código de la factura.

En un informe podremos crear más de un agrupamiento. Si creamos más de uno, la lista será ordenada en primera instancia por el el primer agrupamiento de la lista de agrupamientos del informe. O dicho de otra forma, los agrupamientos seguirán el orden que tengan establecido éstos en el informe. El primero será el agrupamiento principal, el segundo un subagrupamiento del anterior y así sucesivamente. Por ejemplo, si quisiésemos ordenar, dentro de cada factura, por el código de cada línea de factura, crearíamos un agrupamiento, debajo de éste, que agrupe por ese campo:


Creación de la cabecera de la factura
Esta sección será impresa por cada factura a imprimir en la lista de origen del informe.

En ella recodemos que se va a mostrar:

Logotipo y dirección de nuestra empresa.
Nombre y dirección del cliente al que se le emite la factura.
Fecha y nº de la factura.
Cabecera de la factura.

Para añadir una nueva sección al informe seleccionaremos el informe en el explorador de proyectos de Velneo vDevelop y pulsaremos el botón del panel de sub-objetos y seleccionamos la opción Sección:

En la lista de secciones del informe se habrá añadido una nueva sección con el identificador SECCION. Esta sección deberá ser la última en la lista de secciones del informe, de no ser así la seleccionaremos e iremos pulsando el botón de la barra de herramientas del panel de subobjetos hasta situarla al final de la lista:

Una vez hecho esto, haremos doble clic sobre ella para editar sus propiedades:

Identificador: ENCABEZADO_DE_FACTURA.
Nombre: Encabezado de factura.
Tipo de sección: Cabecera de agrupamiento, ya que ha de imprimirse por cada factura de la lista de origen del informe.
Ancho: 800.
Alto: 270.
Agrupamiento: Selecionaremos el agrupamiento que habíamos creado por el enlace a facturas: FACTURA.

Una vez creada la sección pasaremos a añadirle los controles correspondiente. El diseño será como sigue:

Datos de la empresa

Para incluir el logotipo usaremos un control de tipo Dibujo estático; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Dibujo: LOGO_EMPRESA.
Aspecto de dibujo: Original centrado.

Seleccionamos el control que acabamos de crear y pulsaremos la tecla F7 para adaptarlo el tamaño del control a las dimensiones del dibujo.

Para incluir el nombre de la empresa usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será la variable global NOMBRE_EMPRESA declarada en el proyecto de datos: $id_proyecto.vcd@NOMBRE_EMPRESA.
Fuente: Dejaremos el tipo de fuente que nos propone y solamente modificaremos su Estilo a Negrita/Bold.
Alineamiento horizontal: Seleccionaremos el valor Izquierdo, de modo que el texo quede alineado a la izquierda del control.

Para incluir ladirección de la empresa usaremos también un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será la variable global DIRECCION declarada en el proyecto de datos: $id_proyecto.vcd@$1putfqh8.vcd@DIRECCION.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Izquierdo, de modo que el texo quede alineado a la izquierda del control.

Datos del cliente

Para incluir el nombre del cliente usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo NAME del cliente de la factura: #FACTURAS.CLIENTES.NAME:


Fuente: Dejaremos el tipo de fuente que nos propone y solamente modificaremos su Estilo a Negrita/Bold.
Alineamiento horizontal: Seleccionaremos el valor Izquierdo, de modo que el texo quede alineado a la izquierda del control.

Para incluir la dirección del cliente usaremos otro control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: Recordemos que la tabla de clientes no tiene un único campo con la dirección completa sino que está varios campos: Dirección, código postal y población, por tanto, la fórmula que estableceremos será: #FACTURAS.CLIENTES.DIRECCION + “\r\n” + #FACTURAS.CLIENTES.C_POSTAL + ” – ” + #FACTURAS.CLIENTES.POBLACION. \r\n son unas secuencias de escape que nos permiten forzar un salto de línea.
Alineamiento horizontal: Seleccionaremos el valor Izquierdo, de modo que el texo quede alineado a la izquierda del control.
Multilíneas: Seleccionaremos el valor Verdadero, esto hará que el contenido de este control pueda ocupar varias líneas.

Fecha y número de factura

Para incluir ambos datos usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos.

Para la fecha estableceremos las propiedades siguientes:

Contenido: Compondremos la siguiente fórmula:“Fecha: ” + #FACTURAS.FECHA.
Fuente: Dejaremos el tipo de fuente que nos propone y solamente modificaremos su Estilo a Negrita/Bold.
Alineamiento horizontal: Seleccionaremos el valor Izquierdo, de modo que el texo quede alineado a la izquierda del control.

Para el número estableceremos las propiedades siguientes:

Contenido: Compondremos la siguiente fórmula:“Número: ” + #FACTURAS.ID.
Fuente: Dejaremos el tipo de fuente que nos propone y solamente modificaremos su Estilo a Negrita/Bold.
Alineamiento horizontal: Seleccionaremos el valor Izquierdo, de modo que el texo quede alineado a la izquierda del control.

Cabecera de la factura

Estará compuesta por una serie de controles de tipo Texto. Serán datos estáticos, no dinámicos, por lo que su contenido lo estableceremos en la propiedad Nombre de cada control en lugar de hacerlo en la propiedad Nombre. En todos ellos dejaremos la Fuente que el sistema propone por defecto y le aplicaremos un estilo Negrita/Bold. Así, crearemos los textos siguientes:

Referencia, alineado a la derecha.
Artículo, alineado a la izquierda.
Precio, alineado a la derecha.
Cantidad, alineado a la derecha.
Total, alineado a la derecha.

Por último, añadiremos una línea bajo estos controles, para ello usaremos un control de tipo Figura; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Y estableceremos las propiedades siguientes:

Tipo figura: Línea horizontal.
Tamaño de línea: 2 píxels.

El diseño de esta sección quedará de la forma siguiente:


Creación del pie de la factura
Ahora vamos a crear la sección donde se mostrará el total de la factura.

Para añadir una nueva sección al informe seleccionaremos el informe en el explorador de proyectos de Velneo vDevelop y pulsaremos el botón del panel de sub-objetos y seleccionamos la opción Sección:

En la lista de secciones del informe se habrá añadido una nueva sección con el identificador SECCION. Esta sección deberá ser la última en la lista de secciones del informe, de no ser así la seleccionaremos e iremos pulsando el botón de la barra de herramientas del panel de subobjetos hasta situarla al final de la lista:

Una vez hecho esto, haremos doble clic sobre ella para editar sus propiedades:

Identificador: PIE_DE_FACTURA.
Nombre: Pie de factura.
Tipo de sección: Pie de agrupamiento, ya que ha de imprimirse por cada factura de la lista de origen del informe.
Ancho: 800.
Alto: 40.
Agrupamiento: Selecionaremos el agrupamiento que habíamos creado por el enlace a facturas: FACTURA.
Salto de página: Permite especificar una condición para que la sección fuerce un salto de página tras su impresión. En este parámetro tendremos que especificar una condición, si se cumple (TRUE) se forzará el salto de página y si no se cumple, no se forzará. En este caso nos interesará fozar siempre un salto de página tras imprimir esta sección, así la factura siguiente comenzará en una nueva página, por tanto estableceremos una condición que se cumpla siempre; como por ejemplo, 1.

Una vez creada la sección pasaremos a añadirle los controles correspondiente. El diseño será como sigue:

En primer lugar, añadiremos una línea horizontal, para ello usaremos un control de tipo Figura; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Y estableceremos las propiedades siguientes:

Tipo figura: Línea horizontal.
Tamaño de línea: 2 píxels.

Para incluir el literal Total factura usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Nombre: Total factura:
Fuente: Dejaremos el tipo de fuente que nos propone y solamente modificaremos su Estilo a Negrita/Bold.
Alineamiento horizontal: Seleccionaremos el valor Izquierdo, de modo que el texo quede alineado a la izquierda del control.

Para incluir el importe total de la factura usaremos también un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo total de la factura #FACTURAS.TOTAL.
Fuente: Dejaremos el tipo de fuente que nos propone y solamente modificaremos su Estilo a Negrita/Bold.
Alineamiento horizontal: Seleccionaremos el valor Derecho, de modo que el texo quede alineado a la izquierda del control.

El diseño de esta sección quedará de la forma siguiente:


Creación del detalle de la factura
A continuación vamos a crear la sección correspondiente al desglose de la factura, es decir, las líneas de la factura. Recordemos los requisitos iniciales:

Por cada línea de factura se mostrarán los datos siguientes:

Código, foto, nombre y precio del artículo.
Número de unidades vendidas.
Total de la línea.

Además, la línea de factura podrá incluir o no comentarios, que también serán impresos en el informe, bajo el nombre del artículo.
Para lograr esto usaremos la sección de tipo detalle. En este tipo de sección se especifica la manera de presentar la información de un único registro de la tabla de origen que, en este caso recordemos que es la tabla de líneas de factura. En ejecución se imprimirán tantas líneas de detalle como registros contenga la lista que alimente al informe. Si el total de las líneas de detalle a imprimir es mayor que el tamaño del papel, se forzará un salto de página continuando en la hoja siguiente.

En este caso vamos a crear dos secciones, una para presentar los datos de la línea y otra para presentar los comentarios, la impresión de esta última estará condicionada a que el campo donde se recogen los comentarios no esté vacío.
Creación de la sección de línea de factura
En esta sección recordemos que vamos a incluir los datos de cada línea de factura:

Código, foto, nombre y precio del artículo.
Número de unidades vendidas.
Total de la línea.

En la captura de pantalla anterior se muestran también los textos estáticos creados en el emcabezado de la factura a modo de referencia.

Para añadir la nueva sección al informe seleccionaremos el informe en el explorador de proyectos de Velneo vDevelop y pulsaremos el botón del panel de sub-objetos y seleccionamos la opción Sección:

En la lista de secciones del informe se habrá añadido una nueva sección con el identificador SECCION. La seleccionaremos y la situaremos entre las secciones de ENCABEZADO_DE_FACTURA y PIE_DE_FACTURA:

Una vez hecho esto, haremos doble clic sobre ella para editar sus propiedades:

Identificador: LINEA_DE_FACTURA.
Nombre: Línea de factura.
Tipo de sección: Detalle, ya que ha de imprimirse esta sección por cada línea de factura de la lista de origen.
Ancho: 800.
Alto: 75.

Para incluir la referencia del artículo usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo ID de la tabla de artículos: #ARTICULOS.ID.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Derecho, de modo que el texo quede alineado a la derecha del control.

Para incluir la foto del artículo usaremos un control de tipo Campo objeto dibujo; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Campo objeto dibujo: Seleccionaremos el campo #ARTICULOS.FOTO.
Aspecto dibujo: Seleccionaremos el valor Proporcionar sin ampliar, esto hará que la imagen crezca proporcionalmente según el tamaño dado al cotnrol pero solamente hasta su tamaño original, nunca la ampliará.
Altura variable: Seleccionaremos el valor Falso, ya que en este caso nos interesa que permanezca el tamaño dado al control en el informe.

Para incluir el nombre del artículo usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo NAME de la tabla de artículos: #ARTICULOS.NAME
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Izquierdo, de modo que el texo quede alineado a la izquierda del control.

Para incluir el precio del artículo usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo PRECIO de la tabla de artículos: #ARTICULOS.PRECIO.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Derecho, de modo que el texo quede alineado a la derecha del control.

Para incluir la cantidad de unidades vendidas usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo CANTIDAD de la tabla de líneas de factura: #CANTIDAD.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Derecho, de modo que el texo quede alineado a la derecha del control.

Para incluir el total de la línea usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo TOTAL de la tabla de líneas de factura: #TOTAL.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Derecho, de modo que el texo quede alineado a la derecha del control.
Creación de la sección de notas del artículo
En esta sección se imprimirán, si es que las hay, las observaciones que el usuario haya escrito en la línea de la factura; éstas, recordemos, serán impresas bajo la foto y el nombre del artículo de la sección del detalle de la línea de la factura.

Para añadir la nueva sección al informe seleccionaremos el informe en el explorador de proyectos de Velneo vDevelop y pulsaremos el botón del panel de sub-objetos y seleccionamos la opción Sección:

En la lista de secciones del informe se habrá añadido una nueva sección con el identificador SECCION. Lla seleccionaremos y la situaremos entre las secciones de LINEA_DE_FACTURA y PIE_DE_FACTURA:

Una vez hecho esto, haremos doble clic sobre ella para editar sus propiedades:

Identificador: NOTAS_LINEA.
Nombre: Línea de factura.
Tipo de sección: Detalle, ya que ha de imprimirse esta sección por cada línea de factura de la lista de origen.
Ancho: 800.
Alto: 20.
Condición visible: Tal y como habíamos comentado anteriormente, esta sección no será impresa si no hay notas escritas, por tanto la condición a establecer será que no esté vacío el campo OBSERVACIONES:!IsEmpty(#OBSERVACIONES).

Una vez creada la sección pasaremos a añadirle el control correspondiente a las observaciones de la línea. Usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo OBSERVACIONES de la tabla de líneas de albarán: #OBSERVACIONES.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Justificado, de modo que el texo quede alineado a ambos márgenes del control.
Multilíneas: Seleccionaremos el valor Verdadero, de modo que el texo se presente en varias líneas.
Altura variable: Seleccionaremos el valor Verdadero, ya que el contenido de este tipo de campo es de longitud variable.
Puede partirse: Seleccionaremos el valor Verdadero, esto hará que, si el contenido del campo no cambe entero al fina de una página, su impresón continuará en la siguiente, de lo contario solamente se imprimiría lo que cupiese en la página en curso y el resto se truncaría.

Para incluir la foto del artículo usaremos un control de tipo Campo objeto dibujo; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Campo objeto dibujo: Seleccionaremos el campo #ARTICULOS.FOTO.
Aspecto dibujo: Seleccionaremos el valor Proporcionar sin ampliar, esto hará que la imagen crezca proporcionalmente según el tamaño dado al cotnrol pero solamente hasta su tamaño original, nunca la ampliará.
Altura variable: Seleccionaremos el valor Falso, ya que en este caso nos interesa que permanezca el tamaño dado al control en el informe.

Para incluir el nombre del artículo usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo NAME de la tabla de artículos: #ARTICULOS.NAME
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Izquierdo, de modo que el texo quede alineado a la izquierda del control.

Para incluir el precio del artículo usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo PRECIO de la tabla de artículos: #ARTICULOS.PRECIO.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Derecho, de modo que el texo quede alineado a la derecha del control.

Para incluir la cantidad de unidades vendidas usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo CANTIDAD de la tabla de líneas de factura: #CANTIDAD.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Derecho, de modo que el texo quede alineado a la derecha del control.

Para incluir el total de la línea usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: El contenido será el campo TOTAL de la tabla de líneas de factura: #TOTAL.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Derecho, de modo que el texo quede alineado a la derecha del control.

El diseño final de la sección será:


Creación del pie de página
Esta sección será impresa al final de cada página del informe.

En ella recodemos que se va a mostrar el número de la página en curso y el número total de páginas del informe.

Para añadir una nueva sección al informe seleccionaremos el informe en el explorador de proyectos de Velneo vDevelop y pulsaremos el botón del panel de sub-objetos y seleccionamos la opción Sección:

En la lista de secciones del informe se habrá añadido una nueva sección con el identificador SECCION. La seleccionaremos y la situaremos al final de la lista de secciones:

Una vez hecho esto, haremos doble clic sobre ella para editar sus propiedades y estableceremos las siguientes:

Identificador: PIE-DE_PAGINA.
Nombre: Pie de página.
Tipo de sección: Pie de página: Lo contenido en esta sección será impreso al final de cada página del informe.
Ancho: 800.
Alto: 20.

Para incluir el contenido de esta sección usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: Dado que el número de página es un dato dinámico, usamos esta propiedad ya que nos permite usar una fórmula como contenido del control. Estableceremos la fórmula siguiente: “Página ” + sysPageCurrent + ” de ” + sysPageLast. SysPageCurrent y SysPageLast son las variables del sistema que devuelven el número de página en curso y el número total de páginas de un informe, respectivamente.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto.
Alineamiento horizontal: Seleccionaremos el valor Centrado, de modo que el texo quede centrado con la página página.

Por último, haremos que el texto ocupe, horizontalmente, todo el área de la sección:


Creación del pie del informe
Tal y como habíamos establecido al comienzo de este tutorial, al finalizar el informe se mostrará el importe total acumulado de las facturas impresas en el el informe.

Dado que esta información no la tenemos recogida en ningún campo de la base de datos, tendremos que obtenerla en el propio informe, para ello tendremos que crear los siguientes subobjetos en el informe:

Un Cálculo, donde definiremos el cálculo.
Una Variable local, donde guardaremos el resultado del cálculo.

Creación de la variable

Para crear una variable local al informe seleccionaremos el informe en el explorador de proyectos de Velneo vDevelop, pulsaremos el botón del panel de sub-objetos y seleccionamos la opción Variable:

En la lista de variables del informe del panel de subobjetos se habrá añadido la nueva variable con el identificador VARIABLE:

Haremos doble clic sobre ella para editar sus propiedades y estableceremos las siguientes:

Identificador: TOTAL_FACTURADO.
Nombre: Total facturado.
Tipo: Numérico.

Creación del cálculo

Para crearlo seleccionaremos el informe en el explorador de proyectos de Velneo vDevelop, pulsaremos el botón del panel de sub-objetos y seleccionamos la opción Cálculo:

En la lista de cálculos del informe del panel de subobjetos se habrá añadido el nuevo cálculo con el identificador CALCULO:

Haremos doble clic sobre él para editar sus propiedades y estableceremos las siguientes:

Identificador: TOTAL_FACTURADO.
Nombre: Total facturado.
Fórmula: Pie de página: La fórmula que establezcamos en esta propiedad será ejecutada por cada registro de la lista de origen del informe, es decir, en este caso, por cada línea de factura. Para calcular el total facturado, por tanto, usaremos el campo TOTAL de la línea: #TOTAL.
Variable: Tenemos que indicar la variable local del informe en la que guardaremos el resultado del cálculo. En este caso Seleccionaremos la creada anteriormente: TOTAL_FACTURADO.
Reiniciar en: En esta propiedad indicaremos cuándo se debe poner a 0 el cálculo, podremos elegir entre ponerlo a 0 una única vez (al comienzo del informe) o en alguno de los agrupamientos declarados en el mismo (en este caso, cada vez que cambie la factura). En este caso seleccionaremos el valor: .Inicio de informe ya que la finalidad es conocer el total facturado.
Modo: Acumular: De esta forma se irá acumulando en la variable el total de cada línea. En valor Absoluto no acumula, simplemente establece como valor de la variable el contenido de la fórmula de la línea en curso.

Creación del pie de informe

Para añadir esta nueva sección al informe seleccionaremos el informe en el explorador de proyectos de Velneo vDevelop y pulsaremos el botón del panel de sub-objetos y seleccionamos la opción Sección:

En la lista de secciones del informe se habrá añadido una nueva sección con el identificador SECCION. La seleccionaremos y la situaremos al final de la lista de secciones:

Una vez hecho esto, haremos doble clic sobre ella para editar sus propiedades y estableceremos las siguientes:

Identificador: PIE-DE_INFORME.
Nombre: Pie de informe.
Tipo de sección: Pie de informe: Lo contenido en esta sección será impreso al final del informe.
Ancho: 800.
Alto: 300.

Para incluir el contenido de esta sección usaremos un control de tipo Texto; para ello pulsaremos sobre el icono de la barra de controles del editor de informes, pincharemos con el botón izquierdo del ratón en el área de la sección del informe donde queramos incluirlo y, sin soltar el botón, arrastraremos hasta la posición deseada y soltaremos. Estableceremos las propiedades siguientes:

Contenido: Dado que se trata de un dato dinámico, usamos esta propiedad ya que nos permite usar una fórmula como contenido del control. Estableceremos la fórmula siguiente: “Total facturado: ” + TOTAL_FACTURADO + ” €”, donde TOTAL_FACTURADO es la variable de salida del cálculo.
Fuente: Dejaremos el tipo de fuente que nos propone por defecto pero cambiaremos su tamaño a 28 puntos.
Alineamiento horizontal: Seleccionaremos el valor Centrado, de modo que el texo quede centrado con la página página.

Por último, haremos que el texto ocupe, horizontalmente, todo el área de la sección:


Uso avanzado de los marcos
En este tutorial vamos a ver a fondo las posibilidades que nos ofrece el objeto marco; objeto que nos permite definir cómo será el interfaz del usuario cuando ejecuta el proyecto de aplicación con Velneo vClient V7. Nos permite definir cuál es el formulario de fondo de nuestra aplicación, el menú principal del marco y los docks que compondrán el interfaz, que podrán contener toolbars u otros formularios.
Para este ejemplo vamos a crear el marco de aplicación que se presenta en la captura de pantalla siguiente:

Esta marco contiene:

Un menú en la parte superior del mismo que contiene una serie de comandos en stock:

Un formulario de fondo que contiene un dibujo:

Una toolbar en la parte inferior del mismo:

Y dos formularios en la parte derecha del mismo, incluidos en separadores, par mostrar el “Acerca de..” y la ayuda de la aplicación, respectivamente:

En el de ayuda se mostrará el texto siguiente:

Y en el del “Acerca de…” determinada información del sistema:


Creación del formulario de fondo

Para crear el fondo del marco crearemos un formulario con un dibujo de fondo, por lo tanto, necesitaremos añadir dos objetos a nuestro proyecto de aplicación: El dibujo y el formulario.
Para crear el dibujo hacer doble clic sobre el icono de la galería de objetos (Tecla Insert). Esto hará que se abra directamente el editor de imágenes. Desde él podremos tanto importar una imagen alojada en el disco como pegarla a través del portapapeles del sistema. Una vez creada la imagen deseada, podremos cerrar el editor.

Al nuevo dibujo le daremos el Identificador FONDO_APLI.

El siguiente paso será crear el formulario, para ello hacer doble clic sobre el icono de la galería de objetos (Tecla Insert). Al nuevo formulario de estableceremos las propiedades siguientes:

Identificador: FONDO_APLI.
Nombre: Tutorial sobre marcos.
Dibujo de fondo: FONDO_APLI@….
Aspecto de dibujo: Proporcionar sin ampliar. El dibujo se mostrará a escala proporcional ajustado al tamaño del formulario, sin superar el tamaño original de éste.

Creación del menú principal

Tal y como habíamos comentado al comienzo de este tutorial, el marco de aplicación que vamos a crear incluirá un menú con una serie de comandos en stock.
Un menú es el objeto de proyecto de aplicación que permite agrupar acciones y otros menús y presentarlos como un menú desplegable. El menú puede ser usado en el marco de la aplicación, en otros menús o en botones de formulario.

Para crear un objeto de este tipo hacer doble clic sobre el icono de la galería de objetos (Tecla Insert) y estableceremos las propiedades siguientes:

Identificador: PRINCIPAL.
Nombre: Principal. Podemos definir una etiqueta por cada idioma declarado en el proyecto.
Estilo: Texto.

Una vez establecidas las propiedades, estableceremos el contenido del menú, es decir, los siguientes menús en stock: Ficha, Lista, Navegante y Ver. Es lo que se llama Lanzadores de acción.

Lanzadores de acción

Incluiremos las acciones a disparar desde este menú a través del editor de menús, que es abierto en el panel central de Velneo vDevelop:

En la parte superior del mismo se muestra una previsualización del menú y en la parte inferior se muestran dos paneles. En el izquierdo se muestra la lista de acciones disponibles y en el derecho la lista de acciones que seleccionemos.

Para añadir una acción al menú hacer doble clic sobre ella en el panel de acciones disponibles o seleccionarla y pulsar el botón . Esta será añadida al fina de la lista de acciones del panel de acciones seleccionadas y el botón será añadido a la previsualización del menú.

Añadiremos las cuatro acciones en stock indicadas anteriormente:


Creación de la toolbar del marco

Para componer la toolbar necesitaremos tres dibujos y tres menús, uno para cada botón de la toolbar.
Para crear los dibujos correspondientes a cada botón de la toolbar puedes aprovechar los siguientes:

(para el botón Localizadores). Al dibujo que creemos le asignaremos el identificador OPC_LOC.
(para el botón Búsquedas). Al dibujo que creemos le asignaremos el identificador OPC_BUS.
(para el botón Procesos). Al dibujo que creemos le asignaremos el identificador OPC_PRO.

Crearemos tres menú; para este tutorial basta con crear los tres objetos, no vamos a incluir ninguna acción en ninguno. Para crear una acción hacer doble clic sobre el icono de la galería de objetos (Tecla Insert).

Crearemos un menú con las propiedades siguientes:

Identificador: LOC.
Nombre: Localizar
Estilo: Icono y texto.
Icono: OPC_LOC@….

Crearemos otro menú con las propiedades siguientes:

Identificador: BUS.
Nombre: Buscar
Estilo: Icono y texto.
Icono: OPC_BUS@….

Y un último menú con las propiedades siguientes:

Identificador: PRO.
Nombre: Procesos
Estilo: Icono y texto.
Icono: OPC_PRO@….

El siguiente paso será crear la toolbar.

Para crearla hacer doble clic sobre el icono de la galería de objetos (Tecla Insert) y estableceremos las propiedades siguientes:

Identificador: PRINCIPAL.
Nombre: Principal.
Estilo: Icono y texto debajo.
Tamaño del icono: Mediano.

Una vez establecidas las propiedades, estableceremos el contenido de la toolbar, es decir, los tres menús que acabamos de crear. Para ello usaremos el editor de toolbars, que es abierto en el panel central de Velneo vDevelop:

En la parte superior del mismo se muestra una previsualización de la toolbar y en la parte inferior se muestran dos paneles. En el izquierdo se muestra la lista de acciones disponibles y en el derecho la lista de acciones que seleccionemos.

Para añadir una acción a una toolbar hacer doble clic sobre ella en el panel de acciones disponibles o seleccionarla y pulsar el botón . Esta será añadida al fina de la lista de acciones del panel de acciones seleccionadas y el botón será añadido a la previsualización de la toolbar.

Tendremos que añadir los tres menús creados anteriormente:


Creación del Acerca de

Para componer el Acerca de… de nuestra aplicación solamente necesitaremos crear un formulario. Como puede verse en la captura de pantalla anterior el contenido de la ventana incluye distintas fuentes y formatos, para ello crearemos en el formulario un control de tipo Caja de texto enriquecido ya que este tipo de control permite visualizar un texto con formato que permite establecer distintas fuentes, estilos, alineación, etc. El formato se define mediante tags HTML.
Para crear el formulario hacer doble clic sobre el icono de la galería de objetos (Tecla Insert) y estableceremos las propiedades siguientes:

Identificador: ACERCA_DE.
Nombre: Acerca de….
Ancho: 110.
Alto: 110.
Tipo de layout: Estabeceremos un tipo de layout para que el contenido del formulario creazca en función del espacio disponible, en este caso seleccionaremos el valor Layout vertical, aunque podría ser cualquier otro valor distinto a .ninguno, ya que el formulario contendrá un único control.

Una vez establecidas las propiedades del formulario, estableceremos su contenido que, como habíamos dicho al comienzo de este capítulo, será un control de tipo Caja de texto enriquecido. Para crearlo pulsar el botón de la barra de controles del editor de formularios, hacer un clic con el botón izquierdo del ratón dentro del área del formulario y, sin soltar el botón del ratón, arrastrarlo hacia abajo y hacia la derecha hasta obtener el tamaño deseado. Soltar el botón del ratón para finalizar la creación del control. Estableceremos las propiedades siguientes:

Ancho: 100.
Alto: 100.
Posición X: 5.
Posición Y: 5.
Sólo lectura: 1. Esto hará que el control sea de sólo lectura y, por tanto, que su contenido no pueda ser modificado por los usuarios de la aplicación.
Contenido: Permite establecer el contenido a editar en el control. Éste lo estableceremos mediante una fórmula que podremos escribir usando el asistente para edición de fórmulas. Para ello pulsar el botón que aparece al editar esta propiedad. Al final de este capítulo explicaremos cuál va a ser dicho contenido.
Alineamiento horizontal: Izquierda.
Alineamiento vertical: Arriba.
Barras de scroll: Automático: Las barras de scroll solamente se verán en el caso de que el tamaño del control no permita ver la totalidad de su contenido.
Ancho en layout: Permite establecer cómo se comportará el control dentro del layout. El valor a aplicar será Por defecto: Asume el comportamiento que tiene establecido el tipo de control en el sistema. Los controles de texto enriquecido, por defecto, crecerán en anchura proporcionalmente a la anchura del formulario.
Alto en layout: Permite establecer cómo se comportará el control dentro del layout. El valor a aplicar será Por defecto: Asume el comportamiento que tiene establecido el tipo de control en el sistema. Los controles de texto enriquecido, por defecto, crecerán en altura proporcionalmente a la altura del formulario.

Para establecer el Contenido, tal y como hemos indicado anteriormente, especificaremos una fórmula para cuya creación nos apoyaremos en el asistente para edición de fórmulas. En dicha fórmula usaremos etiquetas html para formatear el texto y funciones estándar (haz clic sobre cualquier función de fórmulas para acceder a la ayuda sobre la misma):

“<P><H2>” + getProjectName() + ” – ” + GetProjectVersion() + “</H2></P>”+
“<P><B>País:</B> ” + getSysCountry() + ” (” + getSysCountryCode() + “)</P>” +
“<P><B>Idioma:</B> ” + getSysLanguage() + ” (” + getSysLanguageCode() + “)</P>” +
“<P><B>Zona horaria:</B> UTC ” + choose(getSysTimeZone() > 0, ” + “, “”) + getSysTimeZone() + “</P>” +
“<P><B>Formato de fecha:</B> ” + getSysDateFormat(0) + “</P>” +
“<P><B>Formato de hora:</B> ” + getSysTimeFormat(0) + “</P>” +
“<P><B>Separador decimal:</B> ” + getSysDecimalPoint() + “</P>” +
“<P><B>Nombre de la máquina:</B> ” + getSysMachineName() + “</P>”

Creación de la ayuda

Para componer la ventana de Ayuda de nuestra aplicación solamente necesitaremos crear un formulario.

Como puede verse en la captura de pantalla anterior el contenido de la ventana incluye distintas fuentes y formatos, para ello crearemos en el formulario un control de tipo Caja de texto enriquecido ya que este tipo de control permite visualizar un texto con formato que permite establecer distintas fuentes, estilos, alineación, etc. El formato se define mediante tags HTML.

Para crear el formulario hacer doble clic sobre el icono de la galería de objetos (Tecla Insert) y estableceremos las propiedades siguientes:

Identificador: AYUDA.
Nombre: Ayuda.
Ancho: 110.
Alto: 110.
Tipo de layout: Estabeceremos un tipo de layout para que el contenido del formulario creazca en función del espacio disponible, en este caso seleccionaremos el valor Layout vertical, aunque podría ser cualquier otro valor distinto a .ninguno, ya que el formulario contendrá un único control.

Una vez establecidas las propiedades del formulario, estableceremos su contenido que, como habíamos dicho al comienzo de este capítulo, será un control de tipo Caja de texto enriquecido. Para crearlo pulsar el botón de la barra de controles del editor de formularios, hacer un clic con el botón izquierdo del ratón dentro del área del formulario y, sin soltar el botón del ratón, arrastrarlo hacia abajo y hacia la derecha hasta obtener el tamaño deseado. Soltar el botón del ratón para finalizar la creación del control. Estableceremos las propiedades siguientes:

Ancho: 100.
Alto: 100.
Posición X: 5.
Posición Y: 5.
Sólo lectura: 1. Esto hará que el control sea de sólo lectura y, por tanto, que su contenido no pueda ser modificado por los usuarios de la aplicación.
Contenido: Permite establecer el contenido a editar en el contro. Éste lo estableceremos mediante una fórmula que podremos escribir usando el asistente para edición de fórmulas. Para ello pulsar el botón que aparece al editar esta propiedad. Al final de este capítulo explicaremos cuál va a ser dicho contenido.
Alineamiento horizontal: Izquierda.
Alineamiento vertical: Arriba.
Barras de scroll: Automático: Las barras de scroll solamente se verán en el caso de que el tamaño del control no permita ver la totalidad de su contenido.
Ancho en layout: Permite establecer cómo se comportará el control dentro del layout. El valor a aplicar será Por defecto: Asume el comportamiento que tiene establecido el tipo de control en el sistema. Los controles de texto enriquecido, por defecto, crecerán en anchura proporcionalmente a la anchura del formulario.
Alto en layout: Permite establecer cómo se comportará el control dentro del layout. El valor a aplicar será Por defecto: Asume el comportamiento que tiene establecido el tipo de control en el sistema. Los controles de texto enriquecido, por defecto, crecerán en altura proporcionalmente a la altura del formulario.

Para establecer el Contenido, tal y como hemos indicado anteriormente, especificaremos una fórmula para cuya creación nos apoyaremos en el asistente para edición de fórmulas. En dicha fórmula usaremos etiquetas html para formatear el texto y funciones estándar (haz clic sobre cualquier función de fórmulas para acceder a la ayuda sobre la misma):

“<P><H2>” + getProjectName() + ” – ” + GetProjectVersion() + “</H2></P>” +

“<P>Esta aplicación es un tutorial avanzado sobre el uso del objeto <B>Marco</B></P>” +
“<P>El marco de la aplicación contiene:</P>” +
“<UL><LI>Un <B>menú</B> en la parte superior de la ventana que contiene comandos en stock de Velneo V7.</LI>” +
“<LI>Un <B>formulario</B> central con el logotipo de la aplicación.</LI>” +
“<LI>Una <B>toolbar</B> en la parte inferior.</LI>” +
“<LI>Dos <B>formularios</B> en la parte derecha, incluidos dentro de un separador de subformularios, uno que muestra el \cAcerca de…\c de la aplicación y otro que muestra la Ayuda.</LI>”
Creación del marco
Una vez creados todos los elementos que van a conformar el marco de nuestro proyecto, solamente nos quedará crear el marco propiamente dicho.
Para crear un objeto de este tipo hacer doble clic sobre el icono de la galería de objetos (Tecla Insert).

Sus propiedades son:

Identificador: Debe llevar el identificador AUTOEXEC. Este identificador indica al sistema que este será el marco que será presentado al ejecutar la aplicación.
Nombre:Tutorial sobre marcos.
Icono: Objeto Dibujo que será usado como icono en la barra de título de la ventana que contendrá al marco. Si no especificamos ninguno, se usará el icono de Velneo vClient V7:

Título: En esta propiedad podemos definir, mediante una fórmula, cuál será el título de la ventana que contendrá el marco, para ello usaremos el asistente para edición de fórmulas, y estableceremos la fórmula siguiente:
getProjectName() + ” – ” + GetProjectVersion()

Formulario principal: Seleccionaremos el formulario FONDO_APLI.
Modo de arranque: Seleccionaremos el valor Tab; esto provocará que cada ventana que se abra en la aplicación sea abierta en una nueva pestaña dentro del marco.
Menú principal: Seleccionaremos el menú PRINCIPAL.

Por último, solamente nos queda añadir la toolbar y los formularios de Ayuda y Acerca de…. Para ello crearemos tres
docks dentro del marco. En primer lugar crearemos el dock correspondiente a la toolbar, para ello pulsaremos sobre el botón del panel de subobjetos y seleccionaremos la opción Dock:

El dock creado será mostrado en el panel de subobjetos:

Para editar sus propiedades hacer doble clic sobre el mismo. Estableceremos las propiedades siguientes:

Identificador: TOOLBAR.
Objeto: Seleccionaremos la toolbar PRINCIPAL.

Posición: Abajo.
Modo de aparcar: Es indistinto el valor que seleccionemos, pues solamente vamos a incluir una única toolbar en esa posición.

A continuación crearemos el dock correspondiente al formulario del Acerca de…, para ello seguimos los pasos que indicamos para crear el dock anterior, pero estableceremos las propiedades siguientes:

Identificador: ACERCA_DE.
Objeto: Seleccionaremos el formulario ACERCA_DE.

Posición: Derecha.
Modo de aparcar: Dado que es el primer dock a inclur en la posición derecha, es indistinto el valor que seleccionemos.

Por último, solamente nos queda añadir el dock correspondiente al formulario de Ayuda, para ello seguimos los pasos que indicamos para crear los docks anteriores, pero estableceremos las propiedades siguientes:

Identificador: AYUDA.
Objeto: Seleccionaremos el formulario AYUDA.

Posición: Derecha.
Modo de aparcar: Añadir de esta forma éste formulario y el anterior serán creados en una misma vista, con separadores para poder acceder a los mismos:

Si seleccionásemos el valor Incluir se crearía una vista diferente para cada formulario:

Una vez finalizada nuesto proyecto de aplicación, solamente nos quedará instanciarlo para poder ejecutarlo y comprobar el resultado.

© 2012, Velneo S.A. Todos los derechos reservados      Contacto | Privacidad - Legal
Life is Soft