# Tutor de comandos de interfaz y acciones

Este tutor muestra cómo es posible interactuar, tanto desde procesos como desde eventos de interfaz de objetos, con el interfaz de la aplicación.

Podemos interactuar con las acciones, con los objetos y subobjetos incluidos en los docks del marco principal, con distintos tipos de objeto, etc.\
Este tutor es una muestra de cómo podemos interactuar con el interfaz de nuestras aplicaciones tanto desde [proceso](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso) como desde [manejadores de evento](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/sub-objetos-de-vistas-de-datos/manejador-de-evento) de interfaz. Para ello se hace uso del grupo de comandos de instrucción de proceso de [interfaz](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz).

El tutor está ha sido estructurado en función de los objetos con los que podemos interactuar. Explicaremos cómo utilizarlo en ejecución e identificando dónde podemos encontrar los distintos objeto en edición.

## Interfaz del proyecto

![](https://1845363548-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M7D2zitZhY9szSsa5EK%2Fsync%2F9a1206b4a07a35ead0221508e81b93f808d49eb8.png?generation=1589374151290246\&alt=media)

El formulario que vemos en pantalla es el formulario TUT\_INT\_ACC, que encontraremos dentro de la carpeta de objetos de este tutor en el proyecto de datos de vTutor.

En la parte superior del formulario principal se incluyen botones para acceder a las distintas opciones de pruebas.

A la derecha se muestran dos docks: un dock que contiene un formulario llamado “saludo” y otro que contiene una rejilla de clientes.

A continuación iremos explicando cada una de ellas.

## Interactuar con las acciones del proyecto

Nos permite interactuar con [acciones](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/accion) usadas en el proyecto. Podemos realizar las mismas pruebas tanto desde [procesos](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso) declarados en el proyecto como desde [manejadores de evento](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/sub-objetos-de-vistas-de-datos/manejador-de-evento) de interfaz declarados en este formulario.\
Todos los procesos disparados desde este formulario se encuentran localizados en la carpeta de objetos de este tutor en el proyecto de datos de vTutor.

Todos los eventos de interfaz disparados están incluidos en el formulario TUT\_INT\_ACC\_ACC contenido en esa misma carpeta.

En este caso todos ellos actuarán sobre la acción **clientes por nombre** de la [toolbar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/toolbar) que se activa cuando ejecutamos el tutor.

A continuación pasamos a describir cada una de las opciones disponibles.

### Activar la búsqueda de clientes

Habilita la acción que dispara la búsqueda de clientes. Para ello se hace uso del comando de instrucción de proceso [interfaz: habilitar acción](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/acciones-comandos#interfaz-habilitar-accion). Si la acción estuviese deshabilitada, al pulsar este botón se habilitaría nuevamente en la toolbar.

### Desactivar la búsqueda de clientes

Deshabilita la acción que dispara la búsqueda de clientes. Para ello se hace uso del comando de instrucción de proceso [Interfaz: deshabilitar acción](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/acciones-comandos#interfaz-deshabilitar-accion). Al pulsar este botón se deshabilitaría la opción correspondiente de la toolbar principal.

### Ejecutar la búsqueda de colores

Ejecuta la acción que dispara la búsqueda de clientes. Para ello se hace uso del comando de instrucción de proceso [interfaz: ejecutar acción](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/acciones-comandos#interfaz-ejecutar-accion).

### Es visible la búsqueda de clientes

Comprueba si está visible o no la acción que dispara la búsqueda de clientes. Para ello se hace uso del comando de instrucción [interfaz: ¿está visible la acción?](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/acciones-comandos#interfaz-esta-visible-la-accion).

### Está activa la búsqueda de clientes

Comprueba si está habilitada o no la acción que dispara la búsqueda de clientes. Para ello se hace uso del comando de instrucción [interfaz: ¿está habilitada la acción?](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/acciones-comandos#interfaz-esta-habilitada-la-accion).

### Mostrar la búsqueda de clientes

Muestra la acción que dispara la búsqueda de clientes. Para ello se hace uso del comando de instrucción de proceso [interfaz: mostrar acción](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/acciones-comandos#interfaz-mostrar-accion). Si la acción estuviese oculta, al pulsar este botón aparecería nuevamente en la toolbar.

### Ocultar la búsqueda de clientes

Oculta la acción que dispara la búsqueda de clientes. Para ello se hace uso del comando de instrucción de proceso [interfaz: ocultar acción](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/acciones-comandos#interfaz-ocultar-accion). Al pulsar este botón la acción desaparecerá de la toolbar.

## Interactuar con el marco principal del proyecto

Nos permitirá intentar actuar con los [docks](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/marco#dock) declarados dentro del marco principal del proyecto. Todos los procesos disparables desde este formulario interactúan con el dock llamado TUT\_TES\_INT\_SAL.

Todos los procesos disparados desde este formulario se encuentran localizados en la siguiente carpeta de objetos del de este tutor del proyecto de aplicación de vTutor.

Los manejadores de evento de interfaz se encuentran todos asociados al formulario TUT\_INT\_ACC\_MAR, que encontraremos también dentro de la carpeta de objetos específicos de este tutor.

A continuación pasamos a describir cada una de las opciones disponibles:

### Activar foco en edit del dock saludo

Se trata de un proceso que mediante el comando [interfaz: establecer foco](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-establecer-foco) lleva el foco al control de edición incluido en el dock "saludo".

### Quitar foco del edit del dock saludo

Se trata de un proceso que mediante el comando [interfaz: quitar foco](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-quitar-foco) quita el foco del control de edición incluido en el dock “saludo”.

### Desactivar botón del dock saludo

Se trata de un proceso que mediante el comando [interfaz: deshabilitar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-deshabilitar) deshabilita el botón incluido en el dock “saludo”.

### Activar botón del dock saludo

Se trata de un proceso que mediante el comando [interfaz: habilitar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-habilitar) habilita el botón incluido en el dock “saludo”.

### Desactivar formulario del dock saludo

Se trata de un proceso que mediante el comando [interfaz: deshabilitar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-deshabilitar) deshabilita el formulario incluido en el dock “saludo”.

### Activar formulario del dock saludo

Se trata de un proceso que mediante el comando [interfaz: habilitar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-habilitar) habilita el formulario incluido en el dock saludo.

### Es visible el formulario del dock saludo

Se trata de un proceso que mediante el comando [interfaz: ¿es visible el dock?](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/ventana-principal#interfaz-es-visible-el-dock) comprueba si el dock “saludo” es o no visible.

### Está activo el formulario del dock saludo

Se trata de un proceso que mediante el comando [interfaz: ¿está habilitado?](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-esta-habilitado) comprueba si el formulario incluido en el dock “saludo” está o no habilitado.

### Ocultar formulario del dock saludo

Se trata de un proceso que mediante el comando [interfaz: ocultar el dock](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/ventana-principal#interfaz-ocultar-el-dock) oculta el dock “saludo”.

### Mostrar formulario del dock saludo

Se trata de un proceso que mediante el comando [interfaz: mostrar el dock](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/ventana-principal#interfaz-mostrar-el-dock) hace visible el dock “saludo”.

### Aplicar hoja de estilo CSS al edit del dock saludo

Se trata de un proceso que mediante el comando [interfaz: establecer hoja de estilo CSS](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-establecer-hoja-de-estilo-css) aplica un css al formulario incluido en el dock “saludo”.

### Quitar hoja de estilo CSS al edit del dock saludo

Se trata de un proceso que mediante el comando [interfaz: establecer hoja de estilo CSS](https://velneo.es/info_v7_20_es/velneo_vdevelop/proyectos_objetos_y_editores/proceso/comandos/interfaz/control/interfaz_establecer_hoja_de_estilo_css) quita el css aplicado en el proceso anterior al formulario incluido en el dock "saludo".

### Aplicar clientes seleccionados a la lista en dock

Además del dock "saludo" se incluye otro dock que contiene una lista de clientes. Este manejador de evento de interfaz que mediante el uso de los comandos [interfaz: procesar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-procesar) e [interfaz: añadir ficha a la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-añadir-ficha-a-la-multiseleccion),\
muestra en la rejilla incluida en el dock de la lista de clientes los clientes que hayamos seleccionado en la rejilla incrustada en el formulario en curso.

```
Rem ( Añadir ficha multiselección )
Interfaz: procesar ( SEP_FOR.REJ_01.REJ, Seleccionadas )
    Recorrer lista sólo lectura
        Crear copia de ficha en memoria ( FICHA_MAESTRO )
        Interfaz: añadir ficha a la multi-selección ( SEP_FOR.REJ_02.REJ, FICHA_MAESTRO )
    Interfaz: limpiar la multi-selección ( SEP_FOR.REJ_01.REJ )
Interfaz: activar subcontrol del contenedor de formularios ( SEP_FOR, REJ_02 )
Interfaz: establecer foco ( SEP_FOR.REJ_02.REJ )
```

El comando [interfaz: limpiar la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos) lo que hace es desmarcar los registros seleccionados en la rejilla incrustada en el formulario en curso.

### Quitar clientes seleccionados de la lista en dock

Manejador de evento de interfaz que mediante el uso de los comandos [interfaz: procesar](https://velneo.es/info_v7_20_es/velneo_vdevelop/proyectos_objetos_y_editores/proceso/comandos/interfaz/vista_de_datos/interfaz_procesar) e [interfaz: quitar ficha de la multi-selección](https://velneo.es/info_v7_20_es/velneo_vdevelop/proyectos_objetos_y_editores/proceso/comandos/interfaz/vista_de_datos/interfaz_quitar_ficha_de_la_multiseleccion) quita, en la rejilla incluida en el dock “lista de clientes”, la selección de los clientes que hayamos seleccionado en la rejilla incrustada en el formulario en curso.

```
Rem ( Quitar ficha de multiselección )
Interfaz: procesar ( REJ_MAE, Seleccionadas )
    Recorrer lista sólo lectura
        Crear copia de ficha en memoria ( FICHA_MAESTRO )
        Interfaz: quitar ficha de la multi-selección ( .AUTOEXEC.TUT_TES_INT_LST_COL.REJ_MAE, FICHA_MAESTRO )
    Interfaz: limpiar la multi-selección ( REJ_MAE )
    Interfaz: establecer foco ( .AUTOEXEC.TUT_TES_INT_LST_COL.REJ_MAE )
```

El comando\
[interfaz: limpiar la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-limpiar-la-multiseleccion) lo que hace es desmarcar los registros seleccionados en la rejilla incrustada en el formulario en curso.

### Limpiar multi-selección en lista de clientes

Evento de interfaz que mediante el uso del comando [interfaz: limpiar la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-limpiar-la-multiseleccion), quita las selección de los registros que haya seleccionados en la rejilla incluida en el dock “lista de clientes”.

### Lanzar formulario alta rejilla de clientes del dock

Evento de interfaz que mediante el uso del comando [interfaz: formulario de alta](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-formulario-de-alta) presenta el formulario asociado al evento de alta en la rejilla incluida en el dock llamado “lista de clientes”.

### Lanzar formulario modificación de clientes del dock

Evento de interfaz que mediante el uso del comando [interfaz: formulario de modificación](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-formulario-de-modificacion) presenta el formulario asociado al evento de modificación en la rejilla incluida en el dock “lista de clientes”. Para que este evento sea funcional será necesario tener seleccionado un elemento en dicha rejilla.

### Lanzar formulario baja color del dock

Evento de interfaz que mediante el uso del comando [interfaz: formulario de baja](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-formulario-de-baja) presenta el formulario asociado al evento de baja en la rejilla incluida en el dock “lista de clientes”. Para que este evento sea funcional será necesario tener seleccionado un elemento en dicha rejilla.

### Mostrar los clientes seleccionados en el dock

Evento de interfaz que mediante el uso del comando [interfaz: obtener la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfa-obtener-la-multiseleccion), presenta la lista de los elementos seleccionados en la rejilla incluida en el dock “lista de clientes”.

### Ocultar marco

Evento de interfaz proceso que mediante el comando [interfaz: ocultar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-ocultar) oculta durante unos segundos el marco principal de la aplicación.

## Interactuar con un multivista

Se trata de un ejemplo que nos muestra cómo podemos interactuar con los distintos objetos contenidos en un objeto tipo [multivista](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/multivista). En este ejemplo, el multivista está compuesto por dos rejillas, una de Clientes y otra de Contactos de clientes.

Todos los eventos son disparados desde el formulario TUT\_INT\_ACC\_MUL, que encontraremos dentro de la carpeta de objetos específicos de este tutor.

Las opciones disponibles son:

### Aplicar hoja de estilo CSS a la rejilla de clientes

Se trata de un evento de interfaz que mediante el comando [interfaz: establecer hoja de estilo CSS](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-establecer-hoja-de-estilo-css) aplica un css a la primera rejilla del multivista (Clientes).

### Quitar hoja de estilo CSS a la rejilla de clientes

Se trata de un evento de interfaz que mediante el comando [interfaz: establecer hoja de estilo CSS](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-establecer-hoja-de-estilo-css) quita el css aplicado en el proceso anterior a la primera rejilla del multivista (Clientes).

### Mostrar rejilla de contactos

Evento de interfaz proceso que mediante el comando [interfaz: mostrar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-mostrar) hace visible la segunda rejilla del multivista (Contactos).

### Ocultar rejilla de contactos

Evento de interfaz proceso que mediante el comando [interfaz: ocultar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-ocultar) oculta la segunda rejilla del multivista (Contactos).

### ¿Está visible la rejilla de contactos?

Se trata de un evento de interfaz que mediante el comando [interfaz: ¿es visible?](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-es-visible) comprueba si la rejilla de Contactos del objeto multivista está o no visible.

### Activar rejilla de contactos

Se trata de un evento de interfaz que mediante el comando [interfaz: habilitar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-habilitar) habilita la rejilla de contactos del multivista.

### Desactivar rejilla de contactos

Se trata de un evento de interfaz que mediante el comando [interfaz: deshabilitar](https://velneo.es/info_v7_20_es/velneo_vdevelop/proyectos_objetos_y_editores/proceso/comandos/interfaz/control/interfaz_deshabilitar) deshabilita la rejilla de contactos del multivista.

### ¿Está activa la rejilla de contactos?

Se trata de un evento de interfaz que mediante el comando [interfaz: ¿está habilitado?](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-esta-habilitado) comprueba si la rejilla de contactos del objeto multivista está o no habilitada.

### Activar foco rejilla de contactos

Se trata de un evento de interfaz que mediante el comando [interfaz: establecer foco](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-establecer-foco) activa el foco de la rejilla de contactos del multivista.

### Quitar foco rejilla de contactos

Se trata de un evento de interfaz que mediante el comando [interfaz: quitar foco](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-quitar-foco) quita el foco de la rejilla de contactos del multivista.

### Ver ítems seleccionados en las dos rejillas

Se trata de un proceso que mediante el comando [interfaz: procesar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-procesar) recorre los registros seleccionados en las dos rejillas del multivista y presenta un mensaje con el resultado.

```
Rem ( Ver items seleccionados )
Set ( MSG, "Clientes seleccionados: " )
Interfaz: procesar ( MULTIVISTA.CLT_M_TUT_INT_ACC, Seleccionadas )
    Recorrer lista sólo lectura
        Set ( MSG, "" + MSG + " " + #NAME )
Set ( MSG, "" + MSG + "\r\n" + "Contactos seleccionados: " )
Interfaz: procesar ( MULTIVISTA.CTT_M_CLT, Seleccionadas )
    Recorrer lista sólo lectura
        Set ( MSG, "" + MSG + " " + #NAME )
Mensaje ( MSG, Información, ,  )
```

### Lanzar formulario alta rejilla contactos

Evento de interfaz que mediante el uso del comando [interfaz: formulario de alta](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-formulario-de-alta) presenta el formulario asociado al evento de alta en la rejilla de contactos del multivista.

### Lanzar formulario modificación rejilla de contactos

Evento de interfaz que mediante el uso del comando [interfaz: formulario de modificación](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-formulario-de-modificacion) presenta el formulario asociado al evento de modificación de la rejilla de contactos del multivista. Para que este evento sea funcional será necesario tener seleccionado un elemento en dicha rejilla.

### Lanzar formulario baja contactos del dock

Evento de interfaz que mediante el uso del comando [interfaz: formulario de baja](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-formulario-de-baja) presenta el formulario asociado al evento de baja de la rejilla de contactos del multivista. Para que este evento sea funcional será necesario tener seleccionado un elemento en dicha rejilla.

### Obtener multi-selección en rejilla de contactos

Evento de interfaz que mediante el uso del comando [interfaz: obtener la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-obtener-la-multiseleccion) devuelve los registros seleccionados en la rejilla de contactos del multivista.

### Limpiar multi-selección en rejilla de contactos

Evento de interfaz que mediante el uso del comando [interfaz: limpiar la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-limpiar-la-multiseleccion) quita la selección de los registros seleccionados previamente en la rejilla de contactos del multivista.

## Interactuar con rejillas en separadores

Se trata de un ejemplo que nos muestra cómo podemos interactuar con controles incluidos dentro de subcontroles distintos de un formulario, en este caso, dentro de un [separador formularios](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/formulario/contenedores/separador-de-formularios). En este caso operaremos con rejillas incluidas en distintos separadores y atraparemos señales disparadas desde los formularios incluidos en los separadores.

El formulario donde se ha programado se llama TUT\_INT\_ACC\_SEP y lo encontraremos dentro de la carpeta de los objetos específicos de este tutor.

Las opciones disponibles son:

### Aplicar clientes seleccionados a la lista en Rejilla 2

Manejador de evento de interfaz que mediante el uso de los comandos [interfaz: procesar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-procesar) e [interfaz: añadir ficha a la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-añadir-ficha-a-la-multiseleccion), muestra en la rejilla incluida en el subformulario “Rejilla 2” los registros que hayamos seleccionado en la rejilla incrustada en el subformulario “Rejilla 1”.

```
Rem ( Añadir ficha multiselección )
Interfaz: procesar ( SEP_FOR.REJ_01.REJ, Seleccionadas )
    Recorrer lista sólo lectura
        Crear copia de ficha en memoria ( FICHA_MAESTRO )
        Interfaz: añadir ficha a la multi-selección ( SEP_FOR.REJ_02.REJ, FICHA_MAESTRO )
    Interfaz: limpiar la multi-selección ( SEP_FOR.REJ_01.REJ )
Interfaz: activar subcontrol del contenedor de formularios ( SEP_FOR, REJ_02 )
Interfaz: establecer foco ( SEP_FOR.REJ_02.REJ )
```

El comando [interfaz: limpiar la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-limpiar-la-multiseleccion) lo que hace es desmarcar los registros seleccionados en la rejilla incrustada en el formulario en curso.

### Quitar clientes seleccionados a la lista en Rejilla2

Evento de interfaz que mediante el uso de los comandos [interfaz: procesar](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-procesar) e [interfaz: quitar ficha de la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-quitar-ficha-de-la-multiseleccion) quita, en la rejilla incluida en el separador “Rejilla 2”, la selección de los clientes que hayamos seleccionado en la rejilla incrustada en el subformulario “Rejilla 1”.

```
Rem ( Quitar ficha multiselección )
Interfaz: procesar ( SEP_FOR.REJ_01.REJ, Seleccionadas )
    Recorrer lista sólo lectura
        Crear copia de ficha en memoria ( FICHA_MAESTRO )
        Interfaz: quitar ficha de la multi-selección ( SEP_FOR.REJ_02.REJ, FICHA_MAESTRO )
    Interfaz: limpiar la multi-selección ( SEP_FOR.REJ_01.REJ )
Interfaz: activar subcontrol del contenedor de formularios ( SEP_FOR, REJ_02 )
Interfaz: establecer foco ( SEP_FOR.REJ_02.REJ )
```

El comando [interfaz: limpiar la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-limpiar-la-multiseleccion) lo que hace es desmarcar los registros seleccionados en la rejilla incrustada en el formulario en curso.

### Limpiar multi-selección en Rejilla 2

Evento de interfaz que mediante el uso del comando [interfaz: limpiar la multi-selección](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/vista-de-datos-comandos#interfaz-limpiar-la-multiseleccion) desmarca los registros que se encuentren seleccionados en la rejilla del subformulario “Rejilla 2”.

### Inhabilitar subformulario Rejilla 2

Evento de interfaz que mediante el uso del comando [interfaz: habilitar el subcontrol del contenedor de formularios](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-habilitar-el-subcontrol-del-contenedor-de-formularios) inhabilita el subformulario “Rejilla 2”, esto es, lo oculta detrás del otro y no deja acceder al mismo. Este comando se usa tanto para habilitar como para inhabilitar un subformulario, haciendo uso para ello de la condición que se establezca en el parámetro Fórmula condición. En dicho parámetro debemos especificar una expresión condicional. Si el resultado de su evaluación es 1, el control será habilitado, si es 0 será inhabilitado. En este ejemplo, hemos puesto como condición directamente un 0, lo que hará que el formulario sea inhabilitado.

Al ejecutar el evento el subformulario será inhabilitado y no podrá accederse a él.

### Habilitar subformulario Rejilla 2

El evento disparado en este caso es idéntico al anterior, con la diferencia que en el parámetro “fórmula condición” se ha establecido el valor 1.

### ¿Está habilitado el subformulario Rejilla 2?

Evento de interfaz que mediante el uso del comando [interfaz: ¿está habilitado el subcontrol del contenedor de formularios?](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/interfaz/control#interfaz-esta-habilitado-el-subcontrol-del-contenedor-de-formularios) comprueba si el subformulario “Rejilla 2” está o no inhabilitado. Devolverá un 1 si el subformulario está habilitado o un 0 si no lo está.

### Atrapar pulsación de botones incluidos en los subformularios Rejilla 1 y Rejilla 2

En el formulario TUT\_INT\_ACC\_SEP hemos declarado un evento de interfaz llamado INT\_PUL\_BTN\_SUBFRM\_01 que lo que hace es modificar una variable local del formulario con el texto siguiente:

```
Rem ( Ha pulsado el botón )
Set ( MSG, "Has pulsado el botón del subformulario Rejilla 01" )
```

El contenido de esta variable local es pintada en la parte inferior del formulario TUT\_INT\_ACC\_SEP. El formulario tiene declarada una conexión de evento que se dispara con la señal botón pulsado asociada al botón incluido en el subformulario TUT\_INT\_ACC\_SEP\_SUB\_1 que dispara este evento.

De este modo, cuando el usuario pulse el botón incluido en el subformulario de la primera pestaña, se disparará este evento y se mostrará el mensaje en la parte inferior del formulario TUT\_INT\_ACC\_SEP.

Hemos programado subobjetos idénticos para atrapar la pulsación del botón incluido en el otro subformulario incluido en el separador.

## Comandos de interfaz de guardado de ficha

El formulario de este tutor se llama TUT\_INT\_ACC\_ACE y lo encontraremos dentro de la carpeta de objetos específicos de este tutor.

Este formulario incluye una [rejilla](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/rejilla) de Clientes, que tiene asignado el mismo formulario en las propiedades formulario de alta, formulario de modificación y formulario de baja. Este formulario se llama CLT\_M\_TUT\_INT\_ACC y lo encontraremos en la carpeta de objetos específicos de este tutor.

![](https://1845363548-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M7D2zitZhY9szSsa5EK%2Fsync%2Ff34dff280d3f3b454d7db93c27934689c7548d22.jpg?generation=1589374151400565\&alt=media)

### Guardar cambios sin salir

El evento usa el comando de instrucción [interfaz: guardar ficha en alta o modificación](https://doc.velneo.com/34/velneo-vdevelop/buenas-practicas-de-programacion/buenas-practicas-de-rendimiento/formularios#interfaz-guardar-ficha-en-alta-o-modificacion). Este comando lo que hace es guardar cambios en la ficha que está siendo editada pero mantiene abierto el formulario para que el usuario pueda seguir editándola.

### Guardar cambios y salir

El evento usa el comando de instrucción [interfaz: aceptar](https://doc.velneo.com/34/velneo-vdevelop/buenas-practicas-de-programacion/buenas-practicas-de-rendimiento/formularios#interfaz-aceptar). Este comando lo que hace es guardar cambios en la ficha que está siendo editada y cierra el formulario.

## Señales de botón

Existe señales específicas para [botones](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/formulario/controles-de-entrada/boton). En la carpeta del tutor encontraremos el formulario PED\_MEM\_TUT\_INT\_ACC. En dicho formulario creamos un manejador de evento llamado PRE\_ACE para controlar que no se deje vacío el campo CLIENTE del pedido:

```
Rem ( Comprobar que no esté vacío el cliente )
If ( #CLT = 0 )
    Mensaje ( "Debes especificar un cliente", Información, ,  )
    Interfaz: Establecer foco ( CLT )
    Set retorno proceso = NO
```

Con la señal **previo a la ejecución** asociada al botón Aceptar, ejecutamos el manejador de evento anterior.

Se comprueba si el pedido tiene cliente asignado, si no lo tiene, presenta un mensaje de advertencia y lleva el foco al campo CLIENTE en el formulario.

El uso del comando de instrucción de proceso [set retorno = NO](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso/basicos/salidaretornos#set-retorno-proceso--no), provoca que se cancele la pulsación del botón **aceptar**.

Este formulario de alta de pedido se llama desde el botón **comandos de botón** del tutor.

## Dock saludo

En el formulario incluido en el Dock Saludo, cuyo identificador es TUT\_INT\_ACC\_SAL, y que encontraremos en la carpeta de objetos específicos de este tutor, el botón “¡Púlsame!” dispara el siguiente evento:

```
Rem ( Saludo y solicitud del nombre )
Mensaje ( choose(isEmpty(NOM), ~MSJ_TEST_ESC_NOM@velneo_vTutor_app.app, ~MSJ_TEST_ESC_HOL@velneo_vTutor_app.app + NOM + ~MSJ_TEST_ESC_BIE@velneo_vTutor_app.app), Información, ,  )
If ( isEmpty(NOM) )
    Interfaz: establecer foco ( NOM )
```

Este evento lo que hace es presentar un mensaje cuyo contenido variará en función de si el campo NAME está o no vacío. Si está vacío, llevará el foco al control de edición de dicho campo.

Para los mensajes hacemos uso de un objeto [constante](https://doc.velneo.com/34/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/constante), esto nos permitirá que, si la aplicación la hacemos multi-idioma, podamos traducir los mensajes a idioma o idiomas que se precisen.
