Tutor con interfaz gráfica que ejemplifica el uso del objeto cesta. El tutor está compuesto por un formulario y un dock en el que se muestra el contenido de una cesta.
Mediante un timer asociado al formulario principal, se ejecuta un evento que cada 10 segundos dispara un proceso en 2º plano que crea 5 pedidos y los envía a la cesta mostrada en un dock del marco principal de vTutor.
En dicho proceso también se envía un mensaje a la barra de estado de la cesta con el número total de pedidos pendientes de procesar.
Si editamos cualquier pedido desde la rejilla de la cesta y activamos el campo procesado si aceptamos la ficha se ejecutará un evento de interfaz que quitará esa ficha de la cesta y refrescará la información en la barra de estado de la cesta.
La cesta usada para este ejemplo la encontraremos en la carpeta de objetos de la tabla Pedidos (memoria) y se llama PED_MEM_W_NO_PRO.
En un objeto cesta simplemente debemos indicar su tabla asociada y qué rejilla de dicha tabla se usará para mostrar su contenido. En este tutor, la tabla asociada será PED_MEM_W y la rejilla será la llamada PED_MEM_W que también encontraremos en al la misma carpeta que la cesta.
La encontraremos en la carpeta tablas tutores y buenas prácticas/pedidos (memoria)/pedidos(memoria) del proyecto de aplicación de vTutor.
Lo destacable de este tutor es que la cesta se muestra como un dock del marco.
Si editamos las propiedades del marco AUTOEXEC de vTutor (en la carpeta tutores/tutor de marco), veremos que éste contiene un subobjeto de tipo dock con las propiedades siguientes:
Como puede observarse en la imagen anterior, es posible incluir como dock un objeto de tipo cesta. Al incluir la cesta como dock, cada vez que se le añadan registros, ésta será refrescada automáticamente.
Hemos programado el tutor de modo que el dock no se muestre al ejecutar vTutor, sino que se muestre solamente cuando ejecutemos el tutor de cestas.
Ahora veamos el proceso que hemos creado en el tutor y que añade registros a la cesta:
El proceso está en la carpeta específica del tutor y se llama TUT_CES_PED_ALT.
El proceso simplemente crea una serie de registros en la tabla PED_MEM_W y, con el comando de instrucción cesta: agregar ficha a la cesta envía cada pedido generado a la cesta PED_MEM_W_NO_PRO. Como esta la hemos añadido como dock al marco principal, hará que el contenido de la cesta se refresque tras finalizar este proceso.
En el proceso se usa también el comando Cesta: enviar mensaje a la cesta este comando lo que hace es enviar un mensaje a la barra de estado de la cesta en el dock. Esta barra de estado solamente está disponible cuando la cesta la usamos como dock.
Otro ejemplo de uso de las cestas es el de usarlas como apoyo para operar con dos listas de una misma tabla.
Este ejemplo lo hemos programado en el formulario llamado TUT_CES_BUS_PED. Dicho formulario lo encontraremos en la carpeta de objetos de este tutor dentro del proyecto de aplicación de vTutor:
Vemos que en el formulario se piden una serie de datos para buscar pedidos, unas opciones añadir, cruzar y quitar (cada una asigna un valor diferente a una variable local del formulario), botones con las opciones buscar, invertir y filtrar y una rejilla para mostrar los resultados.
La operativa es la siguiente:
Introducimos los criterios de búsqueda y seleccionamos alguna de las opciones añadir, cruzar y quitar y pulsamos el botón buscar. Si hemos seleccionado la opción añadir, el resultado de la búsqueda se añadirá a la rejilla.
Si hemos seleccionado la opción cruzar, el resultado de la búsqueda se cruzará con la lista de la rejilla de modo que quedarán en ésta solamente los registros coincidentes en ambas.
Si hemos seleccionado la opción quitar, si algún registro de los encontrados está en la lista, lo quitará de la misma.
Todo está programado en el manejador de evento programado en el formulario y que se llama PED_BUS_2.
En dicho manejador de evento se crea una cesta local a proceso y dispara la búsqueda:
Y, en función de la opción que se haya seleccionado, procesará la rejilla y añadirá, o cruzará o quitará de la misma el contenido de la cesta.