Responder a Eventos

Anuncio
33
Responder a Eventos
Que aprenderá en el capítulo 3:
•
La diferencia entre programación orientada a eventos y la programación
tradicional.
•
Como escribir código pulsando un botón.
•
Como añadir comentarios en el código.
•
Como seleccionar controles en la caja de control del editor.
•
Como seleccionar eventos en la caja de eventos del editor.
•
La estructura del programa Visual RPG.
•
Propiedades de los campos de entrada/salida y enlazar los datos de
entrada.
Tiempo aproximado para finalizar este capítulo 3:
45 minutos.
Aspecto que tendrá la aplicación al finalizar este capítulo 3:
34
ASNA Visual RPG para Principiantes
Una de las principales ventajas del Interface de Usuario GráficoError!
Bookmark not defined. es la posibilidad de crear aplicaciones que respondan a
las acciones de los usuarios. Estro permite la usuario la ejecución directa de la
aplicación, en lugar de tener que predefinir paso a paso la integración en el
programa.
Orientación a Eventos vs. Programación Tradicional
En la programación tradicional, la ejecución de un programa depende sólo de
las entradas que hay, comenzando en la primera línea del programa y
siguiendo las líneas del programa, llamando a subrutinas cuando se necesita
La programación orientada a eventos amplia el modelo de
rendir cuentas en función de las acciones que el usuario toma
programa, y para manejar la comunicación entre el mismo
sistema. Estas acciones se llaman los eventos, y cuando
provocan la ejecución de la subrutina del evento.
ejecución para
con respecto al
programa y el
estos ocurren,
En AVR, el código ejecutado responde a un evento. Cada formulario y control
tienen predefinido un conjunto de eventos de sistema y usuario. Si uno de
estos eventos ocurren, AVR invoca al código en la subrutina asociada al
evento. Una subrutina de evento es el código que usted escribe para responder
al evento.
Que pasa en una aplicación orientada a eventos:
1. El proyecto se inicia y automáticamente se carga la pantalla del formulario
principal.
2. Un formulario o control recibe un evento. El evento puede producirse por
el usuario, el sistema, o indirectamente por tu código.
3. Si se produce un evento que corresponde a una subrutina, esta se ejecuta.
4. La aplicación espera al próximo evento.
Ejemplos de eventos asociados al formulario:
•
El ratón se mueve por el formulario. (MouseMove)
•
Se pulsa el botón del ratón en el formulario. (Click)
•
El formulario se descarga desde la pantalla. (Unload)
Ejemplos de eventos asociados a campos de entrada/salida:
•
Se pulsa una tecla. (KeyPress)
•
El campo de e/s tiene el foco. (GotFocus)
•
Se pulsa un doble-click en el campo. (DoubleClick)
Capítulo 3
Responder a Eventos
35
AVR Estructura del Programa
En AVR, como en el tradicional RPG, un programa está predefinido de la
siguiente manera:
Especificaciones de Archivos:
F-Hoja
- Archivo Externo
K(F)-Hoja
- Línea de Continuación para hoja F
Especificaciones de Campos:
S(I)-Hoja
- Estructura de Datos
B(I)-Hoja
- Estructura de campo
N-Hoja
- Constante de Nombre
E-Hoja
- Extensión para definición de Tabla
Hojas de Cálculo:
C-Hoja
- Cálculo
Las hojas en blanco pueden estar en cualquier línea del programa. Las hojas
en blanco se usan para comentarios y para escribir los comandos en formato
libre.
Note que las hojas I y O no están soportadas. Todos los archivos, incluyendo
los de impresora, han de ser definidos externamente,como verás en el capítulo
4.
Dentro de las hojas C, cualquier código que precede la subrutina de un
programa se considera hoja C. El código de estas líneas es ejecutado la
primera vez que el formulario se carga en la memoria y antes de las líneas del
programa que esperan un evento. Normalmente en las hojas C, los archivos ya
están abiertos, por lo que en tiempo de ejecución sólo se inicializan las
propiedades y se codifican las operaciones.
Las subrutinas están a continuación de las hojas C principales. Las subrutinas
se clasifican en dos tipos:
Subrutinas de Eventos y Subrutinas de Procesos.
•
Subrutinas de Eventos son las que son llamadas en tiempo de ejecución
en respuesta a un evento causado por el usuario, el sistema, o
indirectamente por el programa. Se puede ejecutar directamente una
subrutina de eventos, para ello debes utilizar el código de operación EXSR
, con el nombre del control en el factor 2 y el nombre del evento en el
factor 1.
•
Subrutinas de Procesos son las subrutinas utilizadas tradicionalmente en
la programación con RPG.
36
ASNA Visual RPG para Principiantes
Subrutinas de Eventos en el Editor
El Editor contiene en la Barra de la Cabecera dos caja de lista: La Caja de
Control situada a la izquierda de la ventana, y la Caja de Eventos situada a la
derecha de la ventana.
La Caja de Control muestra el formulario actual y todos los controles del
formulario. Pulsa sobre la flecha de la derecha de la Caja de Lista para
mostrar una lista de todos los controles asociados al formulario.
La Caja de Procedimiento de Eventos enumera los procedimientos de eventos
para el control seleccionado. Pulsa sobre la flecha de la derecha de la caja de
la lista para ver todos los eventos disponibles para el control seleccionado.
Si usted selecciona un evento desde la Caja, AVR agregará una subrutina de
evento en su código. Si una subrutina de evento ya existe en su programa para
ese control y evento, entonces el editor ubicará el cursor sobre esa subrutina.
La subrutina de evento generada por AVR contiene los nombres del control y
de evento en una línea de BEGSR y su correspondiente línea ENDSR.
La sintaxis para BEGSR en AVR se ha ampliado para aceptar el Factor 2
optativo. AVR determina si una subrutina de evento existe para un evento
particular, si hay una subrutina en el programa en el factor 1 pone el control y
en el factor 2 el evento.
Capítulo 3
Responder a Eventos
37
Botones de Mandato
Ahora vamos a programar un botón de mandato que nos permita calcular el
cambio que debemos dar al cliente, basándonos en el importe que nos ha dado
y restando el importe total de la compra.
Vamos a añadir un botón de mandato
Botón
Mandato
de
1.
Seleccione el Command Button de la paleta de control y sitúalo en
el formulario.
2. En la propiedad Caption ponga Pay, btnPay en Name y en Default True.
El formulario tendrá el siguiente aspecto:
3. Abra el Editor e introduzca la siguiente subrutina:
38
ASNA Visual RPG para Principiantes
El programa quedará así:
4. Ejecuta el programa.
5. Después de introducir valores nuevos en los campos de E/S, pulsa el nuevo
botón de Pay (Pagar) . AVR capturará la subrutina correspondiente y
calculará el nuevo valor para el campo ioChange (Cambio).
El Evento Click
Como has visto pulsando el botón del ratón es una manera de ejecutar el botón
de mandato. Otra manera es situando el foco en la tecla de mandato y pulsar la
tecla Intro o la barra espaciadora.
•
Si el botón de mandato tiene la propiedad Default a True, al pulsar intro
en cualquier lugar del formulario se ejecutará el evento.
•
Si el botón de mandato tiene la propiedad Cancel a True, al pulsar la tecla
EscError! Bookmark not defined.Error! Bookmark not defined. en
cualquier lugar del formulario se ejecutará el evento del botón.
Finalmente, hay una forma más de seleccionar los botones de tu programa.
Windows trata el carácter ampersand (&) como una opción cuando este se
encuentra en la propiedad Caption . Cuando Windows detecta un ampersand,
subraya el carácter siguiente al & en el título. Cuando el carácter subrayado se
pulsa junto con la tecla Alt, genera un evento para el Botón de Mandato.
Capítulo 3
Responder a Eventos
39
✔ Cambia el caption de btnPay a '&Pay'. Verás que la P tiene un subrayado.
✔ Ejecuta el programa y prueba las diferentes maneras de generar clicks para el
botón Pay.
Vamos a añadir otro Botón de Mandato
1.
Botón de
Mandato
Añade otro Command Button para permitir salir del programa de una
manera controlada.
2. En el Name del botón introduce btnDone, en Caption pon &Done y en la
propiedad Cancel pon True, por lo tanto al pulsar la tecla Esc se ejecutará
el evento.
3. Añade la siguiente subrutina para el botón btnDone.
Volver de una subrutina con el indicador LR encendido provocará que se
finalice el programa.
Añadir Comentarios
Puedes añadir comentarios en tu programa Error! Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error! Bookmark not defined.AVR usando la especificación de la
hoja Blanca, que es una línea con la primera columna en blanco.
Los Comentarios en AVR empiezan con /* y terminan con */. También
puedes empezar con //, en este caso se entiende que el comentario llega hasta
el final de la línea.
En el siguiente código verás algunos ejemplos de comentarios. Verás que
también puedes dejar líneas en blanco.
40
ASNA Visual RPG para Principiantes
Editar datos de IOFields
La mayoría de las propiedades de IOField pueden manejarse con las
propiedades, introduciendo el valor para campos de salida. También se pueden
manejar cuando el usuario cambia el valor de un campo de entrada.
Lista de Propiedades a tener en cuenta:
Para controles con valores numéricos:
NumericLengthError! Bookmark not defined.Error! Bookmark not defined.
Define el número de dígitos de una variableError!
Bookmark not defined.Error! Bookmark not
defined.. Cuando este valor es mayor que 0 y se
utiliza con las propiedades Decimals y EditCode, sólo
se podrán entrar valores numéricos, que no excedan el
valor de esta propiedad.
Decimals
Error! Bookmark not defined.Error! Bookmark
not defined.Error! Bookmark not defined.Error!
Bookmark not defined.Define el numero de dígitos
que tendrá un campo a la derecha del punto decimal,
de un campo con NumericLength.
Cuando las
propiedades NumericLength y EditCode tienen
valores mayor que 0, el usuario sólo podrá entrar el
numero de decimales que no excedan el valor de esta
propiedad.
EditCode
Permite que puedas puntuar campos numéricos,
incluyendo Error! Bookmark not defined.Error!
Capítulo 3
Responder a Eventos
41
Bookmark not defined.Error! Bookmark not
defined.Error! Bookmark not defined.signo de &,
comas, tiempos, signo menos. La propiedad EditCode
se puede utilizar en campos de salida y para editar
campos de entrada junto con las propiedades
NumericLength y Decimals.
EditWord
Permite utilizar literales, como blancos, símbolos y
caracteres para editar datos numéricos.
Para Controles con Valores Carácter:
MaxLength
La longitud máxima se utiliza para limitar el número
de caracteres que un usuario puede introducir en un
campo
de
entrada.Error!
Bookmark
not
defined.Error! Bookmark not defined.Error!
Bookmark not defined. La propiedad MaxLength
predomina sobre cualquier otra propiedad relativa al
número de caracteres que pueden ser introducidos o
visualizado en un campo de E/S. Sin embargo si un
EditCode o EditWord tienen más caracteres que
MaxLength, o NumericLength es mayor que
MaxLength, se visualizará la MaxLength y será
truncada por la derecha.
PasswordChar
Error! Bookmark not defined.Error! Bookmark
not defined.Error! Bookmark not defined.Error!
Bookmark not defined.Determina si el texto que
introducirá el usuario en un campo de E/S, al
introducirse será sustituido por un carácter, que por
omisión se asterisco (*).
UpperCaseOnly
Error! Bookmark not defined.Error! Bookmark
not defined.Error! Bookmark not defined.Error!
Bookmark not defined.Fuerza que todos los campos
de entrada sean mayúsculas.
Para cualquier tipo de campo:
defined.Error! Bookmark not defined.
Alignment
Error!
Bookmark
not
Error! Bookmark not defined.Error! Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not defined.Error! Bookmark not
defined.Error! Bookmark not defined.Controla si el
texto parecerá en la izquierda, derecha, o centro del
área de visualización del control. Si la propiedad
MultiLine es False, la propiedad Alignment es
ignorada para los valores de las propiedades EditWord
42
ASNA Visual RPG para Principiantes
o EditCode.
MultiLine
Error! Bookmark not defined.Error! Bookmark
not defined.Error! Bookmark not defined.Error!
Bookmark not defined.Determina si un campo de E/S
puede aceptar visualizar múltiples líneas de texto.
FieldAdvance
PermiteError! Bookmark not defined.Error!
Bookmark not defined.Error! Bookmark not
defined. las teclas “+”, “-“, e “Intro” en campos
numéricos y actúa como la tecla Tab, salta al siguiente
campo de la secuencia del tabulador. La secuencia del
Tabulador indica donde debe ir el foco cuando se
pulsa la tecla Tab.
FieldAutoAdvance
Cuando esError! Bookmark not defined.Error!
Bookmark not defined.Error! Bookmark not
defined. True, el control automáticamente avanzará al
siguiente campo de E/S, cuando al ejecutarse el
programa el número de caracteres introducido sea
igual al valor establecido en la longitud máxima.
OutOnly
NError! Bookmark not defined.Error! Bookmark
not defined.Error! Bookmark not defined.Error!
Bookmark not defined.o se pueden introducir valores
en un campo de E/S.
OverWrite
Si el valor es True, el texto que se introduzca se
reemplazará por el ya existente.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.Error! Bookmark not
defined.
Vamos a variar las siguientes Propiedades:
1. Cambiar las siguientes propiedades para el campo ioTendered:
ioTendered
Propiedad
Alignment
Decimals
EditCode
FieldAdvance
MultiLine
NumericLength
Valor
1
2
5
True
True
7
ioTotal
Propiedad
Alignment
Decimals
EditCode
FieldAdvance
MultiLine
NumericLength
Valor
1
2
5
True
True
7
ioChange
Propiedad
Valor
Capítulo 3
Alignment
Decimals
EditCode
MultiLine
NumericLength
OutOnly
Responder a Eventos
43
1
2
5
True
7
True
2. Ejecuta el programa, introduciendo diferentes valores para Tendered y
Total y calcula Change.
3. Cuando hayas acabado, salva el programa seleccionando Save Project en
el menú File. Esta vez, AVR no te enseñará una pantalla, ya que el
formulario (.vrf) y el proyecto (.vrm) se salvarán en el mismo directorio y
con los mismos nombres que se especificaron al final del capítulo 2.
44
ASNA Visual RPG para Principiantes
Resumen del capítulo 3
Para
Hay que
Crear un Botón de
Mandato
Seleccionar el control de Botón de Mandato en
la paleta y marcar el tamaño en el formulario.
Añadir un comentario
en el editor de código.
Dejar en blanco la especificación de hoja, en la
columna 1. Abrir el comentario con /* y cerrarlo
con */ o iniciarlo con //.
Alinear el texto a la
derecha, izquierda o
centro del campo de
E/S
Cambiar la propiedad Alignment.
Definir el número de
dígitos a la derecha de
la coma decimal
Cambiar la propiedad Decimals.
Formatear y editar
campos numéricos
Cambiar la propiedad EditCode.
Especificar que la
salida de campo e intro
actúen como la tecla de
tabulador
Cambiar la propiedad FieldAdvance.
Especificar que un
capo de entrada permita
múltiples líneas de
texto
Cambiar la propiedad MultiLine.
Editar campos
numéricos
Cambiar la propiedad NumericLength.
Especificar que el
usuario no pueda
introducir datos
Cambiar la propiedad OutOnly.
Botón/Mdato.
Capítulo 3
Responder a Eventos
45
Más InformaciónError! Bookmark not defined.Error! Bookmark
not defined.
Para encontrar más información de los temas tratados en este capítulo, puede
consultar: los archivos de ayuda, el capítulo correspondiente en el manual, o la
ayuda en línea.
Recuerde que siempre puede ponerse en contacto telefónico con CaCovai 400
(Distribuidor Exclusivo de ASNA Visual RPG en España, Andorra y Portugal)
, o enviar un correo electrónico a [email protected].
Para conocer las novedades de AVR consulte las página web:
http://www.cacovai.com
http://www.asna.com
Archivos de Ayuda de Consulta:
•
Event driven programming
•
Event subroutines
•
Comments, adding
•
Control box, in editor
•
Event procedure box, editor
•
Properties, listing of
•
Alignment property
•
Decimals property
•
EditCode property
•
FieldAdvance property
•
MultiLine property
•
NumericLength property
•
OutOnly property
Manual/Manual en Línea:
•
Capítulo 9 – Fundamentos de Programación.
•
Manual de Referencias de Lenguaje – contiente en orden alfabético
todas las propiedades, controles, eventos, métodos, etc.
Descargar