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 inicializar 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 tutor iremos explicando de forma práctica, los aspectos más destacables de este objeto.
El formulario usado es el de la tabla de Clientes (CLT_M), llamado CLT_M, que encontraremos en la carpeta tablas tutores y buenas prácticas/clientes.
En este tutor conoceremos el uso de los distintos tipos de controles que nos permiten interactuar con la base de datos.
Para ello, usaremos las tablas de Clientes (CLT_M) y de Contactos (CTT_M) de vTutor.
En este tutor vamos a centrarnos en la creación del formulario para la tabla de Clientes (CLT_M).
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 la primera etapa del asistente especificaremos los parámetros siguientes:
Tabla: CLT_M.
Identificador: CLT_M.
Nombre: clientes.
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 “siguiente” 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:
Si nos fijamos en la captura de pantalla del formulario que vamos a crear, en bloque 1 se corresponderá con los campos código y nombre.
El bloque 2 lo dejaremos vacío, ya que allí se incluirá a posteriori un separador de subformularios que contendrá otros formularios con el resto de los campos.
En la propiedad distribución seleccionaremos el valor Etiq. al lado edición alin. derecha, 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 derecha 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.
El bloque 2 lo dejaremos vacío.
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.
Pulsaremos el botón “siguiente” y llegaremos a la ventana final del asistente. Para confirmar la creación del formulario, pulsar el botón “finalizar” de la misma. Una vez hecho esto el formulario será añadido a nuestro proyecto y editado:
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 el campo ID (numérico) y el campo NAME (alfabético):
Se han usado los controles edición numérica y edición alfabética respectivamente.
Este tipo de controles se usa principalmente para la edición del contenido de campos o variables. El dato a editar lo especificaremos en la propiedad contenido.
Dichos controles tienen establecidas, además, las propiedades siguientes:
Seleccionable con tab: permite que el control sea accesible cuando se use el tabulador o el Intro para moverse de un control a otro dentro del formulario. En el caso del ID se ha asignado el valor falso y en el caso del NAME verdadero.
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.
Ya hemos creado el formulario principal. Ahora debemos crear otros tres formularios más que posteriormente incluiremos dentro de un separador en este subformulario.
La forma de crear el formulario será igual al anterior, pero con estas modificaciones:
Su identificador será CLT_M_DAT.
El nombre del formulario será Datos básicos.
No contendrá bloque de botones.
El tipo de distribución a aplicar será de 1 bloque.
Incluirá los campos: SEC_ACT.ID, SEC_ACT.NAME, NIF, DIR, TOT_PED, FCH, HOR y OFF.
Para el campo de tipo fecha (FCH) se ha usado el control edición 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. El control por defecto muestra la fecha en formato dd/mm/aa (2 dígitos para el día, 2 para el mes y 2 para el año. Para que muestre el año con 4 dígitos, lo que haremos será especificar en la propiedad máscara la máscara de entrada siguiente: dd/MM/yyyy.
Para los controles que muestran el campo el campo TOT_PED, ID y el NAME del campo enlazado SEC_ACT se han usado controles de tipo edición numérica y alfabética, del cual ya hemos hablado antes.
Para el campo de tipo booleano (OFF):
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 #CLI_OFF).
En este subformulario se incluye una rejilla con los contactos de los clientes. Para poder incluir esta rejilla necesitaremos:
Una rejilla.
Un proceso o una búsqueda que devuelva los contactos del cliente del formulario. En este caso hemos optado por un proceso. Dado que el proceso se va disparar desde un formulario de Clientes, el proceso tendrá origen ficha y la tabla asociada será la tabla de clientes (CLT_M). En el proceso vamos a obtener los contactos de ese cliente, por lo que el destino del proceso será una lista de la tabla de contactos (CTT_M):
Y su contenido será:
El proceso usa el enlace plural de Clientes a Contactos para cargar los contactos del cliente y lo envía a la salida.
Por último, en el formulario añadiremos control de tipo vista de datos. Como objeto 1 seleccionaremos el proceso anterior y como objeto 2 cualquier rejilla asociada a la tabla CLI_M.
La forma de crear el formulario será igual al anterior, pero con estas modificaciones:
Su identificador será CLT_M_OBS.
El nombre del formulario será Observaciones.
No contendrá bloque de botones.
El tipo de distribución a aplicar será de 1 bloque.
Incluirá únicamente el campo OBS. Le quitaremos la etiqueta con el nombre del campo.
Para el campo de tipo objeto texto enriquecido (OBS):
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.
Se ha diseñado otro formulario para mostrar la foto del cliente. La distribución es igual que la de este y el control usado para mostrar la foto es un control de tipo objeto dibujo.
Tal y como habíamos comentado antes, estos formularios los vamos a incluir dentro del formulario que habíamos creado inicialmente (TUT_FRM). Para ello usaremos un control de tipo separador de formularios. El control lo incluiremos dentro del área marcada en rojo de la captura de pantalla siguiente:
Identificador: DATOS_BASICOS.
Nombre: Datos básicos. Este valor será el que se use como título de la pestaña.
Formulario: CLT_M_DAT.
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 tres subformularios (Contactos, Observaciones y Foto).
En el tutor este formulario lo hemos asignado como formulario de altas, formulario de modificación y Formulario de baja en las propiedades de la rejilla de clientes (CLT_M).
Cuando ejecutemos este tutor, se presentará una rejilla de clientes, y desde ella podremos invocar el formulario de altas, baja o modificación asociado a la misma.
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 únicamente de los campos de varios campos en cada bloque. Así, en el Bloque 1 incluiremos los campos ID y NAME solamente.
Para añadirlos pulsar el botón , esto 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 ambos campos y pulsar el botón “aceptar” de dicha ventana.
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”.
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: