Estructura del Programa que se genera
Con GUIBuilder, las partes que usted no ve -- la armazón
y la lógica asociada a la generación de código -- son apenas tan importantes
como las partes que usted ve. En GUIBuilder, los bloques de código que usted
crea son insertados en una armazón uniforme que guarda el control del detalle
relativo a los manejadores de eventos del programa GUI. La estructura del programa:
- Abre y cierra el dispositivo SYSGUI.
- Carga todos los recursos (formas, ventanas, y controles) desde archivo de recursos
y le asigna un número único de contexto a cada ventana.
- Construye el loop de eventos que chequea la cola de eventos e invoca las rutinas
manejadoras de eventos a como se necesiten.
- Crea los TEMPLATES (de la forma) para que usted pueda trabajar
con nombres de control en lugar de números de control.
- Genera el código necesario para tratar en forma normal las interrupciones por
ESCAPE y control de errores.
- Junta todas las piezas para generar un programa completo.
GUIBuilder genera un programa completo y de trabajo
aún antes de que usted agregue sus propios bloques de código. Usted puede sentarse
solo o con un cliente y diseñar la pantalla gráfica completa con el ResBuilder
e inmediatamente generar un prototipo de programa que demuestra la belleza de
la aplicación y experimente. Usted puede incluso levantar el programa generado
del sitio del cliente. Cuando combine con el archivo de recursos y un simple
programa invocado por CALL, _qres, el cual es requerido en tiempo de corrida,
el programa generado es completamente independiente del ambiente de GUIBuilder.
Si tuviera curiosidad acerca de la estructura completa del programa, sepa que
los programas generados por GUIBuilder quedan muy bien documentados y legibles.
Construcción de Bloques GUI
Un programa creado por medio de GUIBuilder se compone
de una estructura uniforme, más bloques de código individual. Los bloques de código
se catalogan en una de las siguientes categorías:
- Inicialización. Este tipo de bloque de código incluye todo
lo que usted requiere hacer al principio del programa, inmediatamente antes
del loop de eventos. Típicamente aquí, usted puede abrir los archivos de datos,
definir TEMPLATES, e inicializar las variables normales y globales que vaya
a necesitar.
- Manejador de eventos.
Manejadores de eventos son subrutinas individuales invocadas a como son requeridos
en el loop de eventos. Como programador, usted no puede llamar las rutinas para
tratamiento de eventos. Usted tendrá que decidir lo que quiere hacer cuando
un evento es dado, por ejemplo, como cuando un botón específico es empujado.
- Fin del Trabajo. Esto incluye todo lo que usted quiere hacer
al final del proceso, inmediatamente después de que el loop de eventos termine.
Por lo general, usted cerraría los archivos de datos, limpiaría variables, o
bien, podría realizar el retorno hacia un menú.
Hay otro tipo de bloques con código, conocido como Subrutinas
o Funciones, que son usadas por subrutinas comunes, funciones definidas, o código
no ejecutable como el de sentencias TABLE, IOLIST o DATA. Código definido en
estos bloques no es manejado automáticamente en la estructura del programa,
así que usted tendrá que decidir cómo usarlo.
Hay unas pocas características más interesantes asociadas
con la creación de las rutinas del manejador de eventos. Cuando usted crea a
un nuevo manejador de eventos, el bloque de código no empieza completamente
en blanco. Este es inicializado con suficiente código para que usted inicie,
a veces con una línea de comentarios como un REM Button was pushed. Para eventos más complejos, el bloque se
inicializa con una serie de líneas de comentario y otro código para permitir
que usted sepa qué variables del control están disponibles y las varias opciones
asociadas con el control. Cuando usted crea a un nuevo manejador de eventos,
GUIBuilder también chequea la máscara del evento para la ventana escogida, advirtiendo
si la máscara de eventos necesita ser cambiada para hacer el evento visible
en el programa generado.
|