
Ventana de Opciones
A todos nos gusta que nuestros programas sean lo mas fáciles y agradables para el
usuario. Una de las tareas que mas nos ayuda a conseguirlo es el mostrar las opciones
posibles en una ventana y poder movernos por las opciones con las flechas. Desde aquí voy
a explicar una manera sencilla de hacerlo, eso si con un número limitado de opciones, en
la sección utilidades podréis encontrar una rutina para hacerlo con un número ilimitado
de íineas siempre dentro de una pequeña ventana.
Antes de nada, nos definimos nuestro menú
de opciones o cualquier otra cosa, que queramos mostrar a modo de elección, por ejemplo
en una tabla en la Working-Storage y dibujamos la ventana como queramos, a mano, con la rutina de
mas arriba o una ventana real utilizando para ello lo explicado en la sección de
manuales. Yo voy a hacerlo con la ventana virtual en RM/Cobol.
... WORKING-STORAGE SECTION.
01 TABLA-OPCIONES. (definimos 7 opciones de 10 caracteres cada
una).
02 FILLER PIC X(30) VALUE "CONSULTAS LISTADOS
EXTRACTOS ".
02 FILLER PIC X(30) VALUE "ALTAS
BAJAS MODIFACION".
02 FILLER PIC X(10) VALUE "SALIR
".
01 RTABLA REDEFINES TABLA-OPCIONES.
02 ELEMEN PIC X(10) OCCURS 7 TIMES.
01 LI PIC 99.
01 OP PIC X.
01 ESCA PIC 9 COMP-1.
01 QW PIC 9.
PROCEDURE DIVISION.
INICIO.
MOVE 7 TO WINLIN.
MOVE 15 TO WINCOL.
MOVE " OPCIONES " TO WINTIT MOVE 10 TO WINTITLO.
DISPLAY WCB LINE 10 COL 10 LOW ERASE
CONTROL "WINDOW-CREATE".
MOVE 1 TO LI. (aqui dibujamos las opciones
dentro de la ventana.) UNO.
DISPLAY ELEMEN (LI) LINE LI COL 2 LOW.
ADD 1 TO LI IF LI > 7 NEXT SENTENCE ELSE GO UNO.
DOS. (con ésto conseguimos que nunca
se salga de las opciones y ponemos en reverso la linea seleccionada.)
IF LI < 1 MOVE 7 TO LI.
IF LI > 7 MOVE 1 TO LI.
DISPLAY ELEMEN (LI) LINE LI COL 2 LOW REVERSE.
TRES.
ACCEPT OP LINE LI COL 1 OFF NO BEEP
ON EXCEPTION ESCA MOVE 1 TO QW.
DISPLAY ELEMEN (LI) LINE LI COL 2 LOW.
IF ESCA = 52 SUBTRACT 1 FROM LI GO DOS.
IF ESCA = 53 ADD 1 TO LI GO DOS.
IF ESCA = 13 NEXT SENTENCE ELSE GO TRES.
CUATRO. (si ha llegado aqui, es porque ha
pulsado enter y ha seleccionado alguna opción, a partir de aqui, dependiendo del valor de
la variable LI, actuaremos en consecuencia.)
...
...
Espero que os sirvan éstas explicaciones
y podáis aprovecharlas en vuestros programas.
|
|