Métodos

Anuncio
57
Métodos
Que aprenderás en el capítulo 5:
•
Que es un método.
•
Como llamar a los métodos en un control.
•
Como desactivar un control.
•
Como añadir un List Box en un formulario.
•
Como controlar el orden a seguir por la tecla de tabulación.
•
Como añadir una imagen en un formulario.
Tiempo Aproximado para finalizar el capítulo 5:
1 hora ½.
Aspecto que tendrá la aplicación al finalizar este capítulo:
58
ASNA Visual RPG para Principiantes
Desactivar un Control
Hemos visto como enseñar al usuario una caja de mensajes que indica que se
ha introducido un error trivial. Sin embargo, nuestra aplicación será mejor , si
no permitimos al usuario que cometa ningún error lógico.
Desde nuestro programa, no podemos evitar que nos pulsen el click del botón
Pay, si el acumulado es inferior que el total de la cuenta. El botón Pay lo
desactivaremos hasta que el usuario introduzca un valor en el campo tendered.
IOFields lanzan un evento cada vez que el usuario o el programa cambia el
contenido, por lo tanto podemos manejar el evento Change para los campos
Error! Bookmark not defined.Error! Bookmark not defined. ioTendered e
ioTotal. En el evento, podemos llamar a una subrutina (EnablePay) para
validar si el acumulado introducido es correcto. Si este es correcto, nosotros
activaremos el botón o de lo contrario lo desactivaremos. Desactivar un control
es simplemente cambiarle el valor de la propiedad Enabled a Falso.
Vamos a Codificar el Tratamiento de Eventos
1. Vamos a codificar 2 tratamientos de eventos para la subrutina EnablePay
como se muestra a continuación:
2. En el evento tratado al pulsar el botón Pay, no necesitamos validar la
cuenta de tendered. Cuando una cajera ha elegido Pay, nosotros
desactivaremos los botones Buy y Pay y activaremos el botón New Client.
Vamos a codificar la subrutina btnPay-Click como se muestra a
continuación:
Capítulo 5
Métodos
59
Cuando la cajera pulsaError! Bookmark not defined.Error! Bookmark
not defined. el botón New Client , limpiaremos los campos de E/S.
Desactivaremos el botón New y activaremos el botón Buy. También
desactivaremos los botones Pay y New en tiempo de diseño.
Métodos
En capítulos anteriores has aprendido que:
1. Los controles tienen propiedades que determinan su comportamiento.
2. Los controles generan eventos, que provocan que un programa conozca la
acción del usuario
Los controles tienen también Métodos asociados. Los métodos son subrutinas
que manejan las propiedades de los controles, y pueden se llamadas desde el
programa para alterar la apariencia o el comportamiento del control.
Por ejemplo, los controles Combo Box y List Box tienen un método llamado
AddItem, que nos permite añadir una línea a la lista.
A continuación hay una lista con los métodos más comunes y los controles que
pueden operar con ellos:
AddItem
Añade un línea a un Error! Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not defined.List Box o Combo Box, o añade
una nueva file a los controles de Subfichero y Grid.
ClearObj
Inicializa todos los campos de los controles: Error!
Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not defined.IOField, List Box, Combo Box,
Subfile, Grid, Command Button, Option Button y
Scrollbar.
MoveObj
Error! Bookmark not defined.Error! Bookmark not
defined.Error!
Bookmark
not
defined.Error!
60
ASNA Visual RPG para Principiantes
Bookmark not
defined.Error!
Bookmark
not
defined.Error! Bookmark not defined.Mueve cualquier
control, incluido el form, a unas nuevas coordinadas de la
ventana.
List Box
Refresh
Error! Bookmark not defined.Error! Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not defined.Fuerza el refresco inmediato de
cualquier control, incluido el formulario.
RemoveItem
Elimina una línea especifica de un Error! Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not defined.List Box o Combo Box, o elimina
un fila de un Subfichero o un Grid.
SetFocus
Sitúa le foco de entrada en cualquier controlError!
Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not
defined.Error!
Bookmark
not
defined.Error! Bookmark not defined..
Vamos a añadir una List Box (Caja de lista)
1. Añadir una List Box en tu formulario, seleccionando el botón List Box
de la paleta de control. En la List Box, guardaremos los artículos
comprados por el cliente.
2. Ponga en la propiedad Name de la list box el valor lstReceipt (primer
articulo comprado) y en la propiedad Font el valor Courier New con el
tamaño 7. (Puedes introducir directamente el numero correspondiente al
tamaño del campo, sin necesidad de desplegar la lista).
Existen 2 tipos de fuentes en windows:Error! Bookmark not defined.Error!
Bookmark not defined.Error! Bookmark not defined.Error! Bookmark
not defined.Error! Bookmark not defined.Error! Bookmark not defined.
Monoespaciado y Proporcional.
•
Monoespaciado: Son los tipos de fuentes que utilizan el mismo espacio
por carácter, por ejemplo, ocupan el mismo espacio la letra W y la i.
Courier, Courier New, y Lucida Console son ejemplos de fuentes
monoespaciados.
•
Proporcional: Son los tipos de fuentes, que tanto en la pantalla como en
un listado los caracteres ocupan espacios proporcionales al tamaño de los
caracteres. Por ejemplo Times New Roman.
Capítulo 5
Métodos
61
Para cada artículo que compra el cliente, añadiremos una línea en la lista
lstReceipt que contenga la cantidad, descripción y precio. Esta información ya
la tenemos en la subrutina asociada al evento click del botón btnBuy.
Añadiremos una subrutina con 3 campos y usaremos el método AddItem para
añadirla la lista. En AVR, puedes invocar a un método usando el control Error!
Bookmark not defined.Error! Bookmark not defined.Error! Bookmark not
defined.EVAL como se muestra a continuación:
C
EVAL
lstReceipt.addItem(LineItem)
62
ASNA Visual RPG para Principiantes
Vamos a añadir una Estructura de Datos
1. Vamos añadir la estructura de datos LineItem:
Recuerda que puedes introducir una 'S' en la primera columna del editor
para escribir la especificación de una estructura de datos, y a continuación
escribir en la primera columna de la siguiente línea una Error! Bookmark
not defined.'B' para introducir los campos de la estructura.
Cada vez que se añade un artículo al final de la lista, este aparecerá al final
de la pantalla. En la pantalla hay una área asignada para que vayan
apareciendo los artículos, en caso de que no cupiesen automáticamente
aparecerá una barra de scroll vertical. Utilizando esta barra la cajera podrá
consultar la lista de productos introducidos.
Cuando añadimos campos al final de una list box, es una ayuda ver que
siempre los coloca al final de la lista. Hay 2 propiedades que ayudan a
conseguirlo. Esta propiedades sólo se pueden modificar en tiempo de
ejecución.
•
ListCount – Nos dice el número de valores que contiene la
lista.Error! Bookmark not defined.Error! Bookmark not
defined.Error! Bookmark not defined.
•
TopIndex -Error! Bookmark not defined.Error! Bookmark not
defined. Determina que el list box, empieza con el valor 0, que será el
valor que se mostrará como primer valor.
Desde TopIndex se inicia con el 0, extraeremos el valor de ListCount para
determinar el nuevo valor de TopIndex. Con este valor TopIndex será el
último valor de la lista. La List Box permite ajustar el TopIndex para cuando
haya líneas vacías en la ventana del Listbox.
Capítulo 5
Métodos
63
Vamos a completar el programa
1. Vamos a cambiar el código para una nueva versión del evento Click para
el botón btnBuy, como se muestra:
Hay otra cosa más que debemos hacer en el List Box . Cuando
procesamos el evento click en el botón btnNew, inicializar la lista.
2. Para limpiar la lista, invocaremos el método ClearObj:
No olvidarse del paréntesis ( ) después de ClearObj. El paréntesis indica
que el compilador quiere ejecutar un método.
64
ASNA Visual RPG para Principiantes
Asignar el orden de tabulación
La propiedad TabIndexError! Bookmark not defined.Error! Bookmark not
defined.Error! Bookmark not defined.Error! Bookmark not defined.Error!
Bookmark not defined.Error! Bookmark not defined.Error! Bookmark not
defined. determina el orden en que AVR remarca los campos IOFields,
botones y otros controles en tiempo de ejecución. Cuando un control se
remarca, se dice que tiene el foco. El foco es muy importante para las
operaciones de teclado. Cuando el usuario pulsa intro, el control que tiene el
foco es seleccionado o activado en el programa. El usuario puede cambiar el
foco a otro control en el formulario pulsando la tecla del tabulador o pulsando
click en otro objeto.
El control con el TabIndex a 0 es el que recibe el foco al iniciarse el programa.
El primer control que creas en un formulario , siempre tienen el TabIndex a 0.
Por lo tanto el segundo control que crees tendrá el TabIndex con el valor 1.
Se puede cambiar el orden en que los controles reciben el foco en el
formulario, cambiando la propiedad TabIndex a cada control. Cuando cambias
la propiedad TabIndex de un control, AVR automáticamente renumera el
TabIndex de los otros controles. Es imposible que 2 controles tengan el mismo
valor para la propiedad TabIndex.
Si has creado algunos controles, puedes cambiar las propiedades TabIndex y
TabStop, siguiendo los siguientes pasos:
Vamos a cambiar las propiedades TabIndex y TabStop
En los siguientes pasos cambiaremos las propiedades TabIndex y TabStop, tal
como se muestra a continuación:
1. Click en el control que quieras que tenga el último foco. Este es, el objeto
que tendrá en la propiedad tabindex el valor más alto.
2. Pon en la propiedad TabIndex el valor 0.
3. Click en el control que quieras remarcar entre el segundo al último.
4. Repite los pasos 2 y 3, hasta que en todos los controles tengas en la
propiedad TabIndex el valor 0.
Capítulo 5
Métodos
65
Cambia el valor de las propiedades TabIndex y TabStop:
Control
TabIndex
TabStop
lblQuantity
0
N/A
ioQuantity
1
True
lblItem
2
N/A
ioItem
3
True
lblPrice
4
N/A
ioPrice
5
False
lblAmount
6
N/A
ioAmount
7
False
btnBuy
8
True
lblTendered
9
N/A
ioTendered
10
True
btnPay
11
True
btnNew
12
True
lblTotal
13
N/A
ioTotal
14
False
lblChange
15
N/A
ioChange
16
False
lstReceipt
17
False
lblWelcome
18
N/A
Si sigues estos pasos, el primer control que pulses será lblWelcome y el
último será lblQuantity, que tendrá el TabIndex a 0. Del segundo al último
que tu pulses será, ioQuantity, que tendrá el TabIndex a 1, etc.
Visualizar Imágenes
El control Image, permite visualizar una imagen, bitmap, icono, o metafichero.
Usando la propiedad Picture especificas el gráfico que quieras usar. Una caja
de dialogo se visualizará para poder seleccionar el directorio donde se
encuentre la imagen. La propiedad Picture es sólo una propiedad en tiempo de
diseño. Sin embargo , ASNA Visual RPG tiene un nuevo código de operación
LOADPIC que permite cambiar la imagen en el control Image, en tiempo de
ejecución.
Vamos a añadir una Imagen
1.
Image Control
Selecciona el Control Image en la paleta de control y añádelo encima
del control lstReceipt. Cambia el valor de Name a imgSpecial.
66
ASNA Visual RPG para Principiantes
2. Usa el botón
en la propiedad Picture, busca el archivo wine.bmp en el
directorio FoodMap dentro del directorio LearnAVR y pulsa un doble
click.
3. Fíjate que el tamaño de la imagen es más grande que el control image.
Para adecuar el tamaño de la imagen en el control cambia la propiedad
Stretch al valor True.
Tu pantalla quedará de la siguiente manera:
Visualizar una imagen en el formulario:
El directorio FoodMap contiene 5 bitmapsError! Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error! Bookmark not defined. con imágenes de comida.
Definiremos los nombres de estos archivos en una tabla llamada ImageName
y la utilizaremos para variar la imagen cada vez que se introduzca un nuevo
cliente.
1. Codifica la subrutina LoadFood para inicializar la tabla y la variable
ImgIdx que se usará como índice de la tabla, como se ve a continuación:
Capítulo 5
Métodos
67
68
ASNA Visual RPG para Principiantes
2. La tabla se declara utilizando la especificación de la hoja E, y en la hoja C
llamaremos a la subrutina LoadFood. Tal como se muestra a continuación:
3. Vamos a añadir la siguiente codificación al final de la subrutina btnNew
del evento Click:
En el código superior, se utiliza el código de operación CAT para
concatenar la vía de acceso del directorio, introduce en el factor 1, el
siguiente valor. La longitud de BitMapFile pon 80 en lugar de 64.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.
'D:\Archivos
de
programa\Asna\Projects\LearnAVR\FoodMap\'
El path de FoodMap puede ser diferente en tu ordenador.
Depende de las opciones que hayas seleccionado durante la
instalación de AVR.
LOADPIC permite cambiar la imagen del control imgSpecial a otra
imagen nueva.
En caso de tener el error 'Access is denied' al ejecutar el
programa, valida que hayas introducido correctamente la vía de
acceso del directorio FoodMap y no te hayas olvidado ningún
slash ‘\’.
Capítulo 5
Métodos
Resumen del capítulo 5
Para
Hay que
Añadir un valor en un
List Box o Combo Box
Usar el método AddItem.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.
Añadir una nueva fila
en un subfichero o en
un control Grid
Usar el método AddItem.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.
Limpiar todos los datos
de un control
Usar el método ClearObj.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.
Mover cualquier
control a una nueva
coordenada en la
ventana de la pantalla
Usar el método MoveObj.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.
Forzar el refresco de
cualquier control,
incluido el formulario
Usar el método Refresh.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.Error! Bookmark not
defined.Error! Bookmark not defined.Error!
Bookmark not defined.
Eliminar un valor
específico de un List
Box o Combo Box, o
eliminar una fila de un
control subfichero o
grid.
Usar el método RemoveItem.
Situar el foco de
entrada en cualquier
control.
Usar el método SetFocus.
Crear un List Box
Seleccionar el control List Box en la paleta de
control.
Añadir una
especificación de
estructura de datos.
Introducir una S en la primera columna del
código de editor.
Botón/Mdato.
69
70
ASNA Visual RPG para Principiantes
Añadir una
especificación de
campo de estructura de
datos.
Introducir una B en la primera columna del
código de editor.
Ajusta un gráfico al
tamaño de un control
Poner en la propiedad Stretch el valor True del
control Image.
Error! Bookmark not defined.Error! Bookmark not defined.Error!
Bookmark not
defined.Error!
Bookmark
not
defined.Error!
Bookmark
not
defined.Error!
Bookmark not defined.
Capítulo 5
Métodos
71
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:
•
Change event
•
Enabled property
•
Methods, listing of
•
ListCount property
•
ClearObj method
•
TabIndex property
•
TabStop property
•
LOADPIC
•
Image control
•
Stretch property
Manual/Manual en línea:
•
AVR Manual de Referencia de Lenguaje – Un listado alfabético de los
códigos de operación, controles, eventos, propiedades y métodos de Visual
RPG.
Descargar