
5.- Progr. Controles (I)
En el capítulo anterior vimos la programación
de las rutinas ahora es el momento de ver como se programan
los eventos de los controles que tenemos en nuestra
pantalla.
Una de las grandes diferencias que al menos yo he encontrado,
es que cuando se programa de manera tradicional, vas
teniendo el control de cada campo por separado, ahora
en cambio el usuario con el ratón se puede ir
a cualquier campo y dejar otros en blanco. Para evitar
un poco el descontrol, he optado por lo siguiente. Nuestro
primer campo a pedir es el código y por lo tanto
una vez nos situemos sobre el siempre vamos a deshabilitar
todos los demás campos y dejarlos sin contenido,
así el usuario estará obligado a entrar
un código antes de hacer nada, además
aprovechamos y colocamos el número siguiente
de código libre, veamos su programación:
Control: AGE-COD Evento : EDIT
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. WORKING-STORAGE
SECTION. 01
SIGUE PIC 9999. PROCEDURE
DIVISION. MOVE
SPACES TO POW-TEXT OF AGE-NOM MOVE
SPACES TO POW-TEXT OF AGE-DOM MOVE
SPACES TO POW-TEXT OF AGE-POB MOVE
0 TO
POW-NUMERIC OF AGE-POS MOVE
SPACES TO POW-TEXT OF AGE-PRO MOVE
SPACES TO POW-TEXT OF AGE-MOV MOVE
SPACES TO POW-TEXT OF AGE-TEL MOVE
SPACES TO POW-TEXT OF AGE-MAI MOVE
SPACES TO POW-TEXT OF AGE-WEB
MOVE
0 TO POW-ENABLE OF AGE-NOM MOVE
0 TO POW-ENABLE OF AGE-DOM MOVE
0 TO POW-ENABLE OF AGE-POB MOVE
0 TO POW-ENABLE OF AGE-POS MOVE
0 TO POW-ENABLE OF AGE-PRO MOVE
0 TO POW-ENABLE OF AGE-GEH MOVE
0 TO POW-ENABLE OF AGE-GEM MOVE
0 TO POW-ENABLE OF AGE-TIP MOVE
0 TO POW-ENABLE OF AGE-MOV MOVE
0 TO POW-ENABLE OF AGE-TEL MOVE
0 TO POW-ENABLE OF AGE-MAI MOVE
0 TO POW-ENABLE OF AGE-WEB MOVE
0 TO POW-ENABLE OF GRABAR MOVE
0 TO POW-ENABLE OF L-GRABAR MOVE
0 TO POW-ENABLE OF BORRAR MOVE
0 TO POW-ENABLE OF L-BORRAR MOVE
0 TO POW-ENABLE OF LISTAR MOVE
0 TO POW-ENABLE OF L-LISTAR MOVE
0 TO POW-ENABLE OF EMAIL MOVE
0 TO POW-ENABLE OF L-EMAIL MOVE
0 TO POW-ENABLE OF CANCELAR MOVE
0 TO POW-ENABLE OF L-CANCELAR
COMPUTE
SIGUE = TOPE + 1 MOVE
SIGUE TO POW-NUMERIC OF AGE-COD.
|
Ahora, una vez pulsado Return sobre el código introducido
generamos otro evento en el que se comprueba si existe
o no y dependiendo se realizará una función
u otra. Si existe el código llamamos a la rutina
existe, que se encarga de colocarnos todos los contenidos
de los campos y podremos, modificarlos, borrar, regrabar,
etc .... En caso de no existir pone de nuevo los demás
campos habilitados y nos envía al siguiente que
en este caso es AGE-NOM. Veamos su programación:
Control: AGE-COD Evento : RETURN
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. MOVE
POW-NUMERIC OF AGE-COD TO AGECOD IF
AGECOD = 0 GO DOS END-IF READ
AGENDA INVALID KEY GO TRES NOT
INVALID KEY CALL "EXISTE" END-READ CALL
"PONCCC" EXIT
PROGRAM.
DOS. CALL
SETFOCUS OF AGE-COD EXIT
PROGRAM.
TRES. MOVE
1 TO POW-ENABLE OF AGE-NOM MOVE
1 TO POW-ENABLE OF AGE-DOM MOVE
1 TO POW-ENABLE OF AGE-POB MOVE
1 TO POW-ENABLE OF AGE-POS MOVE
1 TO POW-ENABLE OF AGE-PRO MOVE
1 TO POW-ENABLE OF AGE-GEH MOVE
1 TO POW-ENABLE OF AGE-GEM MOVE
1 TO POW-ENABLE OF AGE-TIP MOVE
1 TO POW-ENABLE OF AGE-MOV MOVE
1 TO POW-ENABLE OF AGE-TEL MOVE
1 TO POW-ENABLE OF AGE-MAI MOVE
1 TO POW-ENABLE OF AGE-WEB MOVE
1 TO POW-SELECT OF AGE-TIP INITIALIZE
REGAGE MOVE
POW-NUMERIC OF AGE-COD TO AGECOD CALL
SETFOCUS OF AGE-NOM MOVE
"Grabar" TO POW-TEXT OF L-GRABAR MOVE
1 TO POW-ENABLE OF GRABAR MOVE
1 TO POW-ENABLE OF L-GRABAR MOVE
1 TO POW-ENABLE OF CANCELAR MOVE
1 TO POW-ENABLE OF L-CANCELAR EXIT
PROGRAM.
|
A partir de aquí y para los demás controles
normalmente lo que haremos será ir pasando el
foco al siguiente campo cada vez que pulsemos RETURN,
como lo haríamos en un programa convencional.
Por supuesto el usuario podrá ir libremente por
cada campo. Cuando se pulse el botón de Grabar
será cuando se realicen los controles en los
campos que consideremos como obligatorios. Veamos toda
la programación aunque sea muy simple.
Control: AGE-NOM Evento : RETURN
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. CALL
SETFOCUS OF AGE-DOM
|
Control: AGE-DOM Evento : RETURN
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. CALL
SETFOCUS OF AGE-POB
|
Control: AGE-POB Evento : RETURN
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. CALL
SETFOCUS OF AGE-POS
|
Control: AGE-POS Evento : RETURN
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. CALL
SETFOCUS OF AGE-PRO
|
Control: AGE-PRO Evento : RETURN
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. CALL
SETFOCUS OF AGE-GEH
|
Control:
AGE-GEH Evento : CLICK
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. IF
POW-CHECK OF AGE-GEH = POW-ON MOVE "H"
TO AGEGEN ELSE MOVE
"M" TO AGEGEN END-IF CALL
SETFOCUS OF AGE-TIP
|
Control:
AGE-GEM Evento : CLICK
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. IF
POW-CHECK OF AGE-GEM = POW-ON MOVE "M"
TO AGEGEN ELSE MOVE
"H" TO AGEGEN END-IF CALL
SETFOCUS OF AGE-TIP
|
Control:
AGE-TIP Evento : CHANGE
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. MOVE
POW-SELECT OF AGE-TIP TO AGETIP CALL
SETFOCUS OF AGE-TEL
|
Control:
AGE-TIP Evento : SELCHANGE
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. MOVE
POW-SELECT OF AGE-TIP TO AGETIP CALL
SETFOCUS OF AGE-TEL
|
Control:
AGE-TIP Evento : EDIT
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. IF
POW-TEXT OF L-GRABAR = "Grabar" MOVE
1 TO POW-SELECT OF AGE-TIP END-IF
|
Control:
AGE-TEL Evento : RETURN
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. CALL
SETFOCUS OF AGE-MOV
|
Control:
AGE-MOV Evento : RETURN
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. CALL
SETFOCUS OF AGE-MAI
|
Control:
AGE-MAI Evento : RETURN
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. CALL
SETFOCUS OF AGE-WEB
|
Control:
AGE-WEB Evento : RETURN
|
Programación
|
ENVIRONMENT
DIVISION. DATA
DIVISION. PROCEDURE
DIVISION. CALL
SETFOCUS OF GRABAR
|
Como véis casi todo ha sido igual, con la excepción
de los controles que hacen referencia al género
y al tipo de contacto. Si os dais cuenta el evento que
se produce cuando editamos AGE-TIP, determinamos que
si estamos introduciendo un contacto nuevo (cosa que
sabemos por el nombre del control GRABAR), seleccionamos
directamente el valor 1.
En el próximo capítulo se explicarán
los eventos de los controles que conforman la barra
de herramientas, que son los decisivos y sobre los cuales
controlaremos nuestro archivo.
|
|