
Formularios (Ventanas)
El formulario es el lugar encargado de contener todos los controles y los eventos necesarios para nuestro programa. Como consideración principal, digamos que cada ventana en si misma es un programa. No pasa como en RM/Cobol o Acucobol, que dentro de cada programa podemos tener varias ventanas accesibles, en el caso de PC las ventanas son programas nuevos y diferentes, por lo que habrá que volver a definir todo lo que vayamos a utilizar, ficheros, variables, etc...
Cada ventana dispone de sus propias Divisiones. Environment, Data y Procedure. Estas divisiones podríamos decir que son comunes a todo el formulario. Pero dentro de cada evento de cada objeto también las tendremos, pero solo servirán para dicho evento de dicho objeto.
Importante no olvidarnos de declarar DECIMAL-POINT IS COMMA en la SPECIAL-NAMES del Form para que las comas salgan en su sitio. Los ficheros como siempre, en la SELECT en FILE-CONTROL de la Environment del Form y su descripción en FILE de la DATA también del Form. Por supuesto podemos utilizar el copy como siempre hemos hecho en nuestros programas cobol.
El apartado de PROCEDURE lo utilizaremos para incluir todas las rutinas que vayamos a utilizar en nuestro programa, es posible que haya muchas o ninguna, todo dependerá del análisis. Si alguna acción se va a realizar en mas de una ocasión o por mas de un motivo, es conveniente introducirla como PROCEDURE a la cual llamaremos con un CALL 'nombreprocedure' desde el evento que la queramos ejecutar.
Una cosa importante respecto a las PROCEDURES, su nombre se modifica en el editor de proyectos, dentro del apartado de scripts, ya que por defecto pone un nombre que empieza por fjcobxxx.
En cada módulo siempre habrá una ventana incial (la que por defecto abra la aplicación al ejecutarla).
Eventos
- Click. Cuando se pincha sobre la ventana.
- CloseChild. Cuando se cierra una ventana llamada desde ésta.
- Closed. Cuando se cierra la ventana.
- DblClick. Al hacer doble click sobre la ventana.
- Keydown. Al presionar una tecla. (hundirla)
- KeyPress. Cuando se da una tecla.
- KeyUp. Al soltar una tecla (levantar).
- MouseDown. Cuando se presiona un botón del ratón (hundirlo).
- MouseMove. Cuando el ratón pasa por la ventana.
- MouseUp. Cuando se suelta el botón (levantar).
- Opened. Al iniciarse la pantalla y justo antes de mostrarla.
- PowerBroadcast. Relacionado con el sistema (no lo he usado).
- PreKeyDown. Explicado después.
- PreKeyPress. Explicado después.
- PreKeyUp. Explicado después.
- QueryClose. Antes de cerrarse la ventana.
- Resized. Cuando se cambia el tamaño de la ventana.
Porque existen los eventos KEY.... y PREKEY.... ?. Los eventos KEY... los tienen todos los controles de PowerCobol y con ellos controlamos la tecla pulsada. Imaginemos que queremos que siempre que se pulse F1, nos salga una ventana de ayuda, si solo existieran los eventos KEY, habría que ir programando esos eventos para cada control, con lo cual sería muy engorroso y pesado. Por eso existen los PREKEY...., porque estos se ejecutan antes de pasar por los eventos de los controles, por lo tanto con solo programarlo una vez en el form, problema solucionado.
El evento OPENED será el que utilicemos para la carga inicial de los valores que deseemos, ListBox, Tablas, variables, Declaratives, ya que se ejecutará justo antes de mostrarse la pantalla.
Sobre este evento hay que tener en cuenta que se produce justo antes de abrirse la ventana, por lo que si lo utilizamos para controlar si existen o no los ficheros y si tienen algún error, al mostrar los mensajes que hayan producido los ficheros, éstos aparecerán sin que todavía se haya cargado la pantalla. El resultado no es el mas apropiado, porque además, luego dará el pantallazo de la pantalla y queda muy mal. Para solucionarlo podemos utilizar un pequeño truco, consistente en colocar en el formulario un objeto Timer y activarlo en el Opened, entonces todo el control de los ficheros lo controlamos en el evento de dicho control Timer. De esta manera la pantalla aparece, se ejecuta el Timer y si hay algo mal ya podremos mostrar los mensajes de error.
Métodos
- CallForm. Llama a otra ventana, pasando la actual a inactiva.
- CloseForm. Cierra la ventana.
- DisplayMessage. Muestra una ventana de Mensaje.
- Execute. Permite ejecutar aplicaciones externas.
- GetFileName. Muestra la ventana que Windows utiliza en sus aplicaciones cuando decimos Abrir o Guardar archivo, para seleccionar uno.
- OpenForm. Llama a otra ventana, las dos quedan activas.
- PopUpMenu. Llama a un menu asociado a la ventana.
- Refresh. Vuelve a pintar la ventana.
- Alarm. Genera uno de los sonidos de Windows.
- GetScreenSize. Para conocer la resolución de la pantalla en la que trabajamos.
La diferencia entre CALLFORM y OPENFORM es que con la primera, al abrir la ventana llamada, la que ha llamado se queda inactiva y no se volverá activa hasta que no cerremos la llamada. Con Openform, las dos ventanas, la que llama y la llamada, se quedan activas. La opción de elegir una u otra dependerá de cada situación.
GetFileName, nos puede venir muy bien, cuando hacemos algún programa para exportar o importar datos, ya que nos sale el cuadro de diálogo de Windows para seleccionar un fichero y nos podemos mover por todo el PC, muy, muy útil. La ruta y el nombre de archivo nos viene devuelto en una variable.
Como se crea un PopUpMenu.
Desde cualquier lugar de nuestro formulario pinchando con el botón derecho del ratón, nos aparece un PopUpMenu y una de las opciones es, Menu Editor, pinchamos sobre y creamos nuestro menú. En las propiedades del menú le indicamos que será PopUpMenu. Una vez terminado, nos damos cuenta que automáticamente se nos coloca en la parte superior de nuestro formulario y no era eso lo que deseamos, para quitarlo de ahí, pero sin perder el menu, nos vamos a las propiedades del Formulario, de nuevo con el botón derecho del ratón. Una vez en las propiedades nos vamos a la pestaña Style y en la opción MenuBarName, veréis que aparece el nombre del menú que hemos creado, tan solo tenemos que cambiar el nombre y colocar (None). En ese momento el menú desaparecerá del formulario pero estará disponible para ser llamado de la siguiente manera:
INVOKE POW-SELF 'PopupMenu' USING 'nombremenu'.
|
|