Documentación de Velneo
25
25
  • Introducción
  • Velneo
    • ¿Qué es velneo?
    • Requerimientos de Velneo
    • Notas de la versión
    • Funcionalidades comunes a los componentes de Velneo
      • Instalación
      • Conexión con Velneo vServer
      • Cambiar el estilo de visualización
      • Ver u ocultar barras de herramientas
      • Mensajería interna entre usuarios
      • Soporte de alta resolución (HighDPI)
      • Carpetas de trabajo de los componentes de Velneo
      • Numeración de versiones de Velneo
      • Certificado de firma digital para componentes de Windows
    • Tipos de archivo generados por Velneo
  • Velneo vDevelop
    • ¿Qué es Velneo vDevelop?
    • Interfaz de Velneo vDevelop
    • Lista de teclas aceleradoras de Velneo vDevelop
    • Soluciones y proyectos
    • Control y edición de proyectos
    • Herencia
    • Inspectores
    • Proyectos objetos y editores
      • Objeto
      • De proyecto de datos
        • Indice complejo
        • Tabla
          • Actualización
          • Campo
          • Enlace
          • Indice
          • Plural
          • Traspaso de campo
          • Trigger
        • Tabla estática
        • Variable
      • De proyecto de aplicación
        • Acción
        • Alternador de lista
        • Arbol visor de tablas
        • Bloc de formularios
        • Casillero
        • Cesta
        • ComboView
        • Control SVG
        • Dispositivo serie
        • Formulario
          • Controles de visualización
            • Texto estático
            • Nombre de campo
            • Visor HTML
            • Dibujo
            • Imagen SVG
            • Caja de grupo
            • Menú arbolado
            • Barra de progreso
            • Reloj
            • Manómetro
            • Termómetro
          • Controles de edición
            • Caja de texto
            • Caja de texto enriquecido
            • Data catcher edit
            • Edición alfabética
            • Edición fecha
            • Edición fecha/hora
            • Edición fórmula
            • Edición hora
            • Edición numérica
            • Edición senda fichero
            • Edición senda directorio
            • Objeto dibujo
          • Controles de entrada
            • Botón
            • Botón de check
            • Botón de radio
            • Calendario
            • ComboBox
            • Deslizador
            • Dial
            • ListBox
            • Rueda
          • Contenedores
            • Área de scroll
            • Caja de formularios
            • Pila de formularios
            • Separador de formularios
            • Splitter
            • Vista de datos
          • Layout
          • Tree widget
          • Controles SVG
          • Fichas de extensión
        • Formulario QML
        • Gráfico
        • Imagen SVG
        • Impresora lógica
        • Informe
          • Editor de informes
          • Agrupamiento
          • Sección
          • Cálculo
        • Informe personalizable
          • Diseñando un informe personalizable básico
          • Diseño avanzado
          • Diseñando un informe personalizable
          • Añadiendo orígenes de datos
          • Añadiendo elementos al informe
          • Características avanzadas
          • Etiquetas
          • Asistente de scripts
          • Impresión de gráficos
          • Opciones html
        • ListView
        • Lista QML
        • Localizador
        • Marco
        • Menú
        • Multivista
        • Protocolo TCP-IP
        • Rejilla
          • Propiedades de columna
        • Rejilla avanzada
        • Toolbar
        • ViewFlow
        • Sub-objetos de vistas de datos
          • Conexión de evento
          • Drop
          • Inserción
          • Manejador de evento
      • Comunes a proyecto de datos y de aplicación
        • Búsqueda
        • Cola
        • Constante
        • Dibujo
        • Esquema de tablas
        • Fichero adjunto
        • Función
        • Librería externa
        • Lupa
        • Proceso
          • Comandos de base de datos
            • API
            • Bases de datos externas
            • Búsquedas
            • Campos (grupo de comandos)
            • Cestas
            • Fichas
            • Fichas seleccionadas
            • Listas
            • Tablas
            • Tubos
          • Básicos
            • Controles de flujo
            • Debug
            • Ejecución
            • Salida/retornos
            • Scripts (grupo de comandos)
            • Transacciones (comandos)
            • Variables
          • Comunicación
            • Internet
            • Protocolo TCP
            • Puerto serie
            • SDV
          • Interfaz
            • Acciones (comandos)
            • Control
            • Diálogos
            • Formularios - comandos
            • Localizadores
            • Objeto - grupo de comandos
            • Ventana principal
            • Vista de datos - comandos
          • Sistema
            • Comandos de Sistema
            • Configuración
            • Directorios
            • Ficheros
        • Tubo de ficha
        • Tubo de lista
        • Variable local
      • Editores
        • Asistente de fórmulas
          • Operadores
          • Funciones estándar
            • Funciones API
            • Funciones básicas
            • Funciones de cadenas
              • Expresiones regulares
            • Funciones científicas
            • Funciones de Cliente-servidor
            • Funciones de color
            • Funciones de códigos
            • Funciones de directorios
            • Funciones de fechas
            • Funciones de ficha en curso
            • Funciones de horas
            • Funciones de Internet
            • Funciones de juegos de caracteres
              • Codecs
            • Funciones numéricas
            • Funciones de sistema
            • Funciones de tiempo
            • Funciones trigonométricas
          • Funciones de dll
          • Funciones de proceso
          • Funciones de campo
          • Campos
          • Constantes
          • Variables globales
          • Variables locales
          • Variables del sistema
          • Verificador de fórmulas
          • Conversión automática de datos
          • Introducción de datos literales
          • Secuencias de escape en cadenas de caracteres
          • Composición de sendas en fórmulas
        • Editor de imágenes
        • Selector de fuentes
    • Scripts
      • Lenguajes
        • JavaScript
          • Procesos JavaScript
          • Fórmulas JavaScript
          • Clases
            • Funciones globales
            • Objetos
            • VAbstractBrowser
            • VAbstractDataView
            • VAbstractListDataView
            • VAdvandedGridListDataView
            • VAlternatorListDataView
            • VApp
            • VBoundFieldComboBox
            • VBoundFieldEdit
            • VBoundFieldEditBrowser
            • VBoundFieldListBox
            • VByteArray
            • VCheckBox
            • VClipboard
            • VClockWidget
            • VComboBox
            • VComboListDataView
            • VCoverFlowListDataView
            • VCWebView
            • VDataCatcherEdit
            • VDataCatcherEditBrowser
            • VDataViewDialog
            • VDateEdit
            • VDateEditBrowser
            • VDateTimeEdit
            • VDateTimeEditBrowser
            • VDial
            • VDir
            • VExtension
            • VFile
            • VFileInfo
            • VFilePathEditBrowser
            • VFinder
            • VFont
            • VFormBlockListDataView
            • VFormDataView
            • VFormulaEditBrowser
            • VGaugeWidget
            • VGridListDataView
            • VGroupBox
            • VImage
            • VImageEdit
            • VImageWidget
            • VInstancesList
            • VInstance
            • VInstances
            • VItemRegisterPattern
            • VLabel
            • VLineEdit
            • VLineEditBrowser
            • VListBox
            • VListDataView
            • VLogin
            • VMainWindow
            • VMdiView
            • VMimeData
            • VMultiDataView
            • VNumberSpinBox
            • VNumberSpinBoxBrowser
            • VObjectInfo
            • VObjectInstance
            • VProcess
            • VProgressBar
            • VProjectInfo
            • VPushButton
            • VQmlFormDataView
            • VQmlListDataView
            • VQmlListModel
            • VQuery
            • VRadioButton
            • VRegister
            • VRegisterList
            • VReportListDataView
            • VRequest
            • VResponse
            • VRoot
            • VScreen
            • VScrollArea
            • VServerAdmin
            • VSettings
            • VSlider
            • VSlotListDataView
            • VSolutionInfo
            • VSplitter
            • VSqlDatabase
            • VSSLCertificate
            • VSSLInfo
            • VSSLSessionCipher
            • VStackedWidget
            • VSvgButton
            • VSvgSlideSwitch
            • VSvgToggleSwitch
            • VSvgWidget
            • VSysInfo
            • VTableInfo
            • VTabWidget
            • VTextEdit
            • VTextFile
            • VThermometerWidget
            • VThumbWheel
            • VTimeEdit
            • VTimeEditBrowser
            • VToolBox
            • VTreeItem
            • VTreeItemRegister
            • VTreeListDataView
            • VTreeMenu
            • VTreeMultiTableListDataView
            • VTreeWidget
            • VUser
            • VUserGroup
            • VUserGroupList
            • VUserList
            • VXmlReader
            • VXmlWriter
            • Widget
            • XMLHttpRequest
        • QML
          • Tipos QML
          • Funciones específicas de QML
    • Depuración
      • Depuración de procesos de Velneo
      • Depuración de procesos JavaScript
      • Monitor de vClient
    • Extensiones de Velneo vDevelop
    • Acceso directo a una solución desde vDevelop
    • Buenas prácticas
      • Buenas prácticas de organización
        • Proyectos
        • Organización de carpetas
        • Proyecto de datos
        • Proyecto de aplicación
      • Buenas prácticas de codificación
        • Identificadores
        • Teclas aceleradoras
        • Documenta
        • Diseña los formularios como si no existiesen los layouts
      • Buenas prácticas de rendimiento
        • Arquitectura
          • Listas de registros
          • Lista de resultados de una búsqueda
          • Las cestas
          • Las variables globales
          • La caché de fichas
          • Programa en cloud
        • Base de datos
          • Campos
          • Indices
          • Actualizaciones
          • Eventos de tabla o triggers
          • Variables globales y constantes
          • Tablas en memoria vs tablas en disco
          • Optimizar migraciones de datos
          • Búsquedas en el servidor ¿Cuándo y Cómo?
          • Campos fórmula vs campos en disco
          • Indices condicionados vs búsquedas complejas
          • ¿Cuándo usar tablas de extensión?
          • Indices de trozos y palabras
          • ¿Cuándo usar cada tipo de campo alfa?
        • Formularios
          • Condiciones de visible y activo
          • Carga de subformularios en pestaña, caja o pila
        • Procesos y funciones y eventos
          • 1º, 2º, 3º y 4º plano ¿Cuándo usar cada uno?
          • Bloqueo blando vs bloqueo duro
          • Pasar información del cliente al servidor
          • ¿Cómo optimizar transacciones grandes?
          • ¿Cómo gestionar las transacciones?
          • Grabaciones optimizadas para el usuario
        • Carga de registros en objetos de lista
          • Rejillas
            • Campos punteros a singular
            • Totales
            • Condiciones de activo, visible y color en columna
            • Campos de tipo objeto
        • Conoce los límites
      • Imágenes
      • Buenas prácticas para el desarrollo en equipo
    • Análisis de bases de datos para aplicaciones de Velneo
      • Un centro de enseñanza
      • Facturas de un cliente
      • Repartos de obras de teatro
      • Galería de arte
      • Gestión de un colegio
      • Instalación de lunas para vehículos
      • Libros y autores
      • Tienda de discos
      • Últimos pedidos de un proveedor
      • Existencias por almacén y precios por cliente
      • Generación de tickets para un quiosco
      • Navegación por facturas
  • Velneo vAdmin
    • ¿Qué es Velneo vAdmin?
    • Gestión de usuarios
    • Gestión de aplicaciones
      • Soluciones
      • Instancias
      • Disco
    • Monitorización
      • Lista de comandos
    • Tareas
    • Acceso directo
  • Velneo vClient
    • ¿Qué es Velneo vClient?
    • Movilidad
    • Funcionalidades de Velneo vClient
      • Accesos directos y VRL
      • Cambiar idioma
      • Panel de procesos en 2º plano
      • Manejo de rejillas
      • Uso de la rejilla avanzada
      • Manejo de cestas
      • Refrescos
      • Caché local
      • Edición de campos enlazados a maestro
      • Edición de campos de tipo fecha
      • Capturar imagen desde una cámara
      • Asignar impresoras lógicas
      • Actualización automática
      • Personalización de la ventana de conexión de Velneo vClient
      • Instalador personalizado de Velneo vClient
      • Ordenación de listas
  • Velneo vServer
    • ¿Qué es Velneo vServer?
    • Instalación y configuración
      • Activación de la licencia
      • Línea de comandos de Velneo vServer
      • Parámetros configurables de Velneo vServer
      • Estructura de directorios
    • Iniciar Velneo vServer
    • Funcionalidades
      • Protocolo VATP
      • Protocolo VATPS
      • Multi-hilo
      • Integridad referencial
      • Refrescos terciarios
      • Sistema transaccional
      • Sistema de bloqueos
      • Tecnología bigkey
      • Hilo de control
    • vPacker
  • Velneo vInstallBuilder
    • ¿Qué es Velneo vInstallBuilder?
    • Configurar una instalación
    • Probar una instalación
    • Crear el instalable
    • Accesos directos
  • Velneo vModApache
    • ¿Qué es Velneo vModApache?
    • Instalación y configuración
    • Nomenclatura de objetos en urls
    • Uso de ficheros adjuntos
    • Caché local de Velneo vModApache
  • Velneo vDataClient
    • ¿Qué es Velneo vDataClient?
    • Iniciar Velneo vDataClient
    • Interfaz de Velneo vDataClient
    • Procesos
    • Utilidades
    • Acceso directo a una instancia de datos
  • Velneo vTranslator
    • ¿Qué es Velneo vTranslator?
    • Importación y exportación basada en XLIFF
    • Acceso directo a una solución
  • Velneo ODBC Driver
    • ¿Qué es velneo ODBC Driver?
    • Referencia de comandos SQL
  • Velneo vVersion
    • ¿Qué es Velneo vVersion?
  • Velneo vERP
    • ¿Qué es Velneo vERP?
    • Manual del programador
    • Documentación del ApiRest
    • Novedades de la versión
  • Velneo vTutor
    • ¿Qué es vTutor?
    • Tutores de objetos básicos
      • Tutor de árboles visores de tablas arboladas
      • Tutor de búsquedas
      • Tutor de cestas
      • Tutor de formularios
      • Tutor de informes
      • Tutor de localizador básico
      • Tutor de marcos
      • Tutor de rejillas
      • Tutor de rejillas avanzadas
    • Tutores de objetos avanzados
      • Tutor de alternadores de lista
      • Tutor de comboview
      • Tutor de drag and drop
      • Tutor de eventos
      • Tutor de grabación de fichas
      • Tutor de gráficos
      • Tutor de impresión de informes
      • Tutor de lupas
      • Tutor de protocolo TCP/IP
    • Tutores de controles
      • Tutor de botones de menú
      • Tutor de controles SVG
      • Tutor de edición numérica
      • Tutor de visor html dinámico
      • Tutor de vistas de datos de lista
    • Tutores de procesos y manejadores de evento avanzados
      • Tutor de comandos de interfaz y acciones
      • Tutor de importación y exportación de ficheros ASCII
      • Tutor de portapapeles
      • Tutor de procesos
      • Tutor de SDV
    • Tutores de scripts
      • QML: hola mundo
      • QML: tutor básico
      • QML: tutor de vistas
      • Tutor de XMLHttpRequest (webServices)
  • Velneo cloud
    • ¿Qué es Velneo Cloud?
    • Panel de control vServer cloud
      • URC
      • vServer
      • Apache
      • SFTP
      • Usuarios
    • Copias de seguridad
    • Velneo cloud API
      • Uso de Velneo cloud API
    • Explorador de archivos cloud sFTP
    • TCP en Velneo cloud
    • Velneo vModApache en cloud
    • SLA
    • Hora de los servidores en el cloud de Velneo
    • ¿Qué puedo hacer si tengo una incidencia en mi servidor cloud?
Con tecnología de GitBook
En esta página
  • Controles básicos
  • Creación del subformulario “datos básicos”
  • Creación del subformulario "contactos"
  • Creación del subformulario “observaciones”
  • Agrupación de formularios

¿Te fue útil?

  1. Velneo vTutor
  2. Tutores de objetos básicos

Tutor de formularios

Última actualización hace 4 años

¿Te fue útil?

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.

Controles básicos

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:

Para el campo ID (numérico) y el campo NAME (alfabético):

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.

Creación del subformulario “datos básicos”

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 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):

Creación del subformulario "contactos"

Una rejilla.

Y su contenido será:

Rem (Carga los contactos del cliente)
Cargar plurales (CTT_M_MAE)
    Añadir lista a la salida

Creación del subformulario “observaciones”

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):

Agrupación de formularios

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”.

Se ha usado el control . 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.

Se han usado los controles y respectivamente.

Para el campo de tipo fecha (FCH) se ha usado el control . 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.

Se ha usado el control (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 con los contactos de los clientes. Para poder incluir esta rejilla necesitaremos:

Un o una 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):

El proceso usa el 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 . Como objeto 1 seleccionaremos el proceso anterior y como objeto 2 cualquier rejilla asociada a la tabla CLI_M.

Se ha usado el control . 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 .

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 . El control lo incluiremos dentro del área marcada en rojo de la captura de pantalla siguiente:

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:

nombre de campo
edición numérica
edición alfabética
edición fecha
botón de check
rejilla
proceso
búsqueda
enlace plural
vista de datos
caja de texto enriquecido
objeto dibujo
separador de formularios