
7.- La Pantalla de Consulta
Vamos con la segunda pantalla de nuestra aplicación,
una pantalla mucho mas compleja y efectiva que la de
mantenimiento. Si bien en esa primera nos limitabamos
a colocar campos de edición para introducir los
datos, en ésta segunda vamos a hacer una consulta
completa y en la que aparecerán nuevos controles
a los que aplicaremos nuevos eventos.
Para crear otra pantalla dentro de nuestro proyecto debemos
seleccionar la opción New , del menú de File .
Para el estilo de la ventana marcamos: Pop-up Windows, Thin
y Title Bar. La llamamos CONSULTA y en el título
de la misma le ponemos Consulta de contactos.
A continuación os pongo una imagen de como debe
de quedar la pantalla con todos sus controles, es una
imagen en tiempo de desarrollo y seguidamente os explico
las características de cada uno. La imagen no
está a tamaño real, está exactamente
a un 70% para que pudiera entrar en la página.

TABLE
El control mas importante que contiene es la tabla, llamada
por PowerCobol Table. La misma nos va a servir para
incluir una lista separada por columnas con todos nuestros
contactos, la cual podremos clasificar por cada uno
de los campos que contiene. Las propiedades son las
siguientes:

Le llamaremos como véis TABLA y tendrá todas
las columnas que véis y una mas que no sale,
llamada E-MAIL. Para cada una de las columnas están
serán sus características:
CAPTION |
PICTURE |
WIDTH |
ALIGNMENT |
SCROLL LOCK |
CODIGO |
ZZZZ |
40 |
RIGHT |
SI |
NOMBRE |
X(30) |
200 |
LEFT |
SI |
DOMICILIO |
X(30) |
200 |
LEFT |
NO |
C.P. |
99999 |
40 |
RIGHT |
NO |
POBLACION |
X(20) |
132 |
LEFT |
NO |
PROVINCIA |
X(15) |
100 |
LEFT |
NO |
TIPO |
X(12) |
80 |
LEFT |
NO |
TELEFONO |
X(20) |
132 |
LEFT |
NO |
TELEFONO MOVIL |
X(20) |
132 |
LEFT |
NO |
E-MAIL |
X(30) |
200 |
LEFT |
NO |
He respetado los nombres de las propiedades en inglés,
porque de esa manera os saldrán a vosotros. Indicaros
que la opción Scroll Lock, lo que posibilita
es que los campos marcados con esa propiedad no se muevan
al desplazarnos horizontalmente por la tabla, con lo
que el código y el nombre siempre estarán
disponibles a la vista. Si os dais cuenta, al principio
le he dicho que solo tiene una línea (Rows),
una vez en ejecución se le irán añadiendo
las líneas que sean necesarias según registros
tengamos.
GRAPH
Para la representación gráfica de los datos,
PowerCobol dispone de éste control, que aunque
no muy extenso en sus posibilidades si es efectivo en
cuanto a su cometido. Gracias a el, vamos a representar
de forma gráfica la cantidad de contactos que
tenemos en nuestro fichero según su tipo. Las
propiedades de dicho gráfico al cual llamaremos
desde nuestr aplicación GRAFICO, son las siguientes:

Lo mas reseñable de éste control es indicarle
el tipo de gráfico que vamos a representar, vertical,
horizontal, de lineas o en forma de queso, además
de los límites tanto superior como inferior para
la representación.
PRINT
Para evitar tener que confeccionar un listado y puesto que
PowerCobol posee un control para imprimir los controles,
podemos apoyarnos en él y aprovechar su potencia
para imprimir la tabla y así conseguir un listado
profesional sin escribir ni una sola línea de
código. Para ello y antes de nada tenemos que
tener en cuenta que la propiedad PRINT de nuestros controles,
tiene que estar desactivada excepto para el control
tabla que será el que se imprima. Además
PowerCobol con éste control, me refiero a la
tabla, tiene el privilegio de imprimirla completamente,
aunque su contenido no quepa en la pantalla, con lo
que ya veréis que bien queda y que fácil
es conseguirlo.
Por supuesto podremos continuar imprimiendo utilizando nuestras
definiciones de líneas descritas en la Working-Storage
Section, pero para determinados casos podemos aprovecharnos
de éste control. Sus propiedades son las siguientes:

Con éstas propiedades os garantizo que el listado
queda muy bien en modo apaisado y sobre un papel
tipo A4. Este control carece de eventos.
DEMAS CONTROLES
Como podéis apreciar al resto de controles, son los
habituales, LABEL y BUTTON, que nos ayudan a dar forma
a la pantalla de consulta.
Antes de seguir os diré como se llaman cada uno de
los campos que figuran a la derecha y que rellenaremos
con los totales y subtotales. Además el fondo
de dichos campos se ha puesto en colores que utilizaremos
también para cada una de las barras del gráfico
y así situar los datos mas rapidamente. El porque
he utilizado LABEL en vez de EDIT es muy sencillo, para
evitar que dichos campos se puedan modificar o tomar
el foco. Al ponerlos como LABEL el compilador los considera
como DISPLAYS normales y no podemos ni modificarlos
ni editarlos ni nada similar.
Para poner el número de contactos de tipo Personal,
el LABEL se llama DE1. Para poner el número
de contactos de tipo Profesional, el LABEL se llama
DE2. Para poner el número de contactos de
tipo Familiar, el LABEL se llama DE3. Para poner
el número de contactos de tipo de Empresa, el
LABEL se llama DE4. Para poner el número de
contactos de tipo Sanitario, el LABEL se llama DE5. Para
poner el número total de contactos, el LABEL
se llama TOTAL. Para poner el número de contactos
Hombres, el LABEL se llama DEH. Para poner el número
de contactos Mujeres, el LABEL se llama DEM.
Veamos los eventos a programar sobre dicho formulario. En éste
capítulo veremos solo algunos y dejaremos el
resto de eventos, así como la programación
del resto de eventos de los demás controles para
el siguiente capítulo.
Evento |
Programación |
Ayuda |
SPECIAL-NAMES |
DECIMAL-POINT IS COMMA. |
Indicamos la coma como punto decimal. |
FILE-CONTROL |
SELECT AGENDA ASSIGN TO "AGENDA.DAT"
ORGANIZATION INDEXED ACCESS DYNAMIC RECORD
KEY KEYAGE FILE STATUS STAAGE.
SELECT
CLASI ASSIGN TO "CLASI.DAT". |
Definición
de nuestros archivos.
Para clasificar. |
FILE |
FD AGENDA
GLOBAL EXTERNAL
LABEL RECORD STANDARD. 01 REGAGE. 02
KEYAGE. 03
AGECOD PIC 9999. 02
AGENOM PIC
X(30). 02
AGEDOM PIC
X(30). 02
AGEPOS PIC
99999. 02
AGEPOB PIC
X(20). 02
AGEPRO PIC
X(15). 02 AGEGEN
PIC X. 02
AGETIP PIC
9. 02 AGETEL
PIC X(20). 02
AGEMOV PIC
X(20). 02
AGEMAI PIC
X(30). 02
AGEWEB PIC
X(40).
FD CLASI GLOBAL
LABEL RECORD STANDARD. 01 REGCLA. 02
CLACOD PIC
9999. 02
CLANOM PIC X(30). 02
CLADOM PIC X(30). 02
CLAPOS PIC
99999. 02
CLAPOB PIC
X(20). 02
CLAPRO PIC
X(15). 02
CLATIP PIC
X(12). 02
CLATEL PIC
X(20). 02
CLAMOV PIC X(20). 02
CLAMAI PIC
X(30). |
Descripción
de los ficheros a utilizar en nuestra aplicación.
Al ponerle GLOBAL EXTERNAL conseguimos que
los valores de los campos se pasen de una
ventana a otra y por todos los controles
de la ventana.
Esta
definición corresponde al fichero
que vamos a utilizar para la clasificación
por las distintas columnas de la tabla.
|
WORKING |
01 STAAGE
GLOBAL PIC
XX. 01 MENSAJE IS GLOBAL. 02
FILLER PIC X(7) VALUE "ERROR:
". 02
NUMSTA PIC 99BB. 02
FILLER PIC X(15) VALUE "POR
EL MOTIVO:". 02
NOMSTA PIC X(15). 01
CCC PIC 9999
GLOBAL. 01 TOPE PIC 9999
GLOBAL.. 01 AHIVA PIC
9(4) GLOBAL EXTERNAL. |
Variable
de estado. Mensaje en caso de error al
acceder al fichero.
Contador. Tope
de contador. Variable. |
El próximo capítulo abordará el evento
OPENED, en el que se cargarán los datos en la
tabla y se pondrán los totales por tipo, además
de formar el gráfico y así terminaremos
la pantalla de consulta.
Una vez concluido el diseño de la ventana, pinchamos
sobre Project, Edit y a continuación pulsamos sobre el botón
Add, para añadir esta ventana al proyecto y así
poder compilar y ver como funciona. Una vez añadida
pulsamos sobre el botón Ok y ya podemos ver en
la pequeña ventana del proyecto que tenemos en
la pantalla, como esta ventana de consulta está incluida.
|
|