|
|
Monografias | Programación orientada a eventosProgramación orientada a eventosResumen: Introducción. Visual Basic. Visual C++. Java. Programas Secuenciales, Interactivos Y Orientados A Eventos. Propiedades y métodos. Modo de diseño y de ejecución. Objetos y Propiedades. Nombres de Objetos. Orden de disparo de los eventos. Carga y descarga de formulario. Eventos relacionados con el ratón. Agregando código al formulario. Crear, disparar y manejar eventos personalizados. Eventos y propiedades relacionados con gráficos. Objetivo Programas secuenciales, interactivos y
orientados a eventos
Eventos
Propiedades
Métodos
Programas para el entorno de Windows
Modo de diseño y modo de ejecución. Nombres de Objetos
Orden de disparo de los eventos
Carga y descarga de formulario
Eventos relacionados con el ratón
Agregando código al formulario.
Crear, disparar y manejar eventos
personalizados
Eventos y propiedades relacionados con gráficos
Conclusión
Bibliografía
Objetivo
: El
trabajo identificará conceptos de programación orientada al evento confrontándola
con lenguajes visuales y orientados a objetos, asimismo, y manejará el ambiente
de desarrollo de Visual Basic en la construcción de interfaces gráficas para
demostraciones de eventos. Introducción
a la Programación Orientada a Eventos
Los
lenguajes visuales orientada al evento y con manejo de componentes dan al
usuario que no cuenta con mucha experiencia en desarrollo, la posibilidad de
construir sus propias aplicaciones utilizando interfaces gráficas sobre la base
de ocurrencia de eventos. Para
soportar este tipo de desarrollo interactuan dos tipos de herramientas, una
que permite realizar diseños gráficos y , un lenguaje de alto nivel que
permite codificar los eventos. Con dichas herramientas es posible desarrollar
cualquier tipo de aplicaciones basadas en el entorno. Visual
Basic es
uno de los lenguajes de programación que más entusiasmo despiertan entre los
programadores de computadoras, tanto expertos como novatos. En el caso de los
programadores expertos por la facilidad con la que desarrollan aplicaciones
complejas en poquísimo tiempo (comparado con lo que cuesta programar en Visual C++, por ejemplo).
En el caso de los programadores novatos por el hecho de ver de lo que son
capaces a los pocos minutos de empezar su aprendizaje. El precio que hay que
pagar por utilizar Visual Basic es una
menor velocidad o eficiencia en las aplicaciones. Visual
Basic es
un lenguaje de programación visual, también llamado lenguaje de 4ta. generación.
Esto quiere decir que un gran número de tareas se realizan sin escribir código,
simplemente con operaciones gráficas realizadas con el ratón sobre la
pantalla. Visual
Basic es
también un programa basado en objetos,
aunque no orientado a objetos como Visual C++. La diferencia está en que Visual Basic utiliza objetos
con propiedades y métodos,
pero carece de los mecanismos de herencia y polimorfismo
propios de los verdaderos lenguajes orientados a objetos como Java y C++. En
este trabajo se presentará las características generales de Visual
Basic, junto con algunos ejemplos sencillos que den idea de la potencia
del lenguaje orientado a eventos, y del modo en que se utiliza. Programas
Secuenciales, Interactivos Y Orientados A Eventos Existen
distintos tipos de programas. En los primeros tiempos de los ordenadores los
programas eran de tipo secuencial (también
llamados tipo batch). Un programa secuencial es un programa que se arranca,
lee los datos que necesita, realiza los cálculos e imprime o guarda en el disco
los resultados. De ordinario, mientras un programa secuencial está ejecutándose
no necesita ninguna intervención del usuario. A este tipo de programas se les
llama también programas basados u
orientados a procedimientos o a
algoritmos (procedural languages).
Este tipo de programas siguen utilizándose ampliamente en la actualidad, pero
la difusión de los PC’s ha puesto de actualidad otros tipos de programación. Los
programas interactivos
exigen la intervención del usuario en tiempo de ejecución, bien
para
suministrar datos, bien para indicar al programa lo que debe hacer por medio de
menús. Los programas interactivos limitan y orientan la acción del usuario. Por
su parte los programas orientados a eventos son
los programas típicos de Windows,
tales como Netscape,
Word,
Excel,
PowerPoint
y otros. Cuando uno de estos programas ha arrancado, lo único que hace
es quedarse a la espera de las acciones del usuario, que en este caso son
llamadas eventos. El
usuario dice si quiere abrir y modificar un fichero existente, o bien comenzar a
crear un fichero desde el principio. Estos programas pasan la mayor parte de su
tiempo esperando las acciones del usuario (eventos) y respondiendo a ellas. Las
acciones que el usuario puede realizar en un momento determinado son variadísimas,
y exigen un tipo especial de programación: la programación orientada a eventos. Este tipo de programación
es sensiblemente más complicada que la secuencial y la interactiva, pero con
los lenguajes visuales de hoy, se hace sencilla y agradable. Antes
de continuar es necesario definir algunos conceptos de los elementos de
Programación Orientada a Eventos. Eventos Ya
se ha dicho que las acciones del usuario sobre el programa se llaman eventos. Son eventos típicos el click sobre un botón, el hacer
doble click sobre el nombre de un fichero para abrirlo, el arrastrar un icono,
el pulsar una tecla o combinación de teclas, el elegir una opción de un menú,
el escribir en una caja de texto, o simplemente mover el ratón. Más adelante
se verán los distintos tipos de eventos reconocidos por Windows 95 y por Visual
Basic. Cada vez que se produce un evento sobre un determinado tipo de
control, Visual Basic arranca una determinada función o procedimiento
que realiza la acción programada por el usuario para ese evento
concreto. Estos procedimientos se llaman con un nombre que se forma a partir del
nombre del objeto y el nombre del evento, separados por el carácter (_), como
por ejemplo txtBox_click, que es el nombre del procedimiento que se ocupará
de responder al evento click
en el objeto txtBox. Propiedades
y Métodos. Además
de los eventos, la mayor parte de los objetos, como los formularios y los
controles, son suministrados con propiedades y métodos. Son
conceptos fundamentales e importantes. Propiedades Una
propiedad es una asignación que describe algo sobre un objeto como un
formulario. Dependiendo de la propiedad, se la puede asignar en tiempo de diseño
usando la ventana Propiedades y/o en tiempo de ejecución al programar.
A continuación se describen
dos ejemplos de las propiedades del formulario de Visual Basic: ·
MinButton.
Esta propiedad puede asignarse como TRUE (verdadero) o FALSE (falso).
Dependiendo de la asignación, el formulario tendrá o no tendrá un botón
minimizar. ·
BackColor.
Asignando esta propiedad a un valor expresado como hexadecimal RGB (Rojo Verde
Azul) o como una constante se cambia el color del fondo del formulario. Se
pueden consultar las constantes usando el examinador de objetos (Seleccione VER,
EXAMINADOR DE OBJETOS) y en la Biblioteca VBRUN (Columna clase) bajo
“ColorConstants” y “SystemColorConstants”. Métodos Los
métodos
son funciones que también son llamadas desde programa, pero a
diferencia de los procedimientos no son programadas por el usuario, sino que
vienen ya pre-programadas con el lenguaje. Los métodos realizan tareas típicas,
previsibles y comunes para todas las aplicaciones. de ahí que vengan con el
lenguaje y que se libere al usuario de la tarea de programarlos. Cada tipo de
objeto o de control tiene sus propios métodos. En
general solo pueden ser ejecutados en tiempos de ejecución no en tiempo de diseño.
Algunos ejemplos de métodos de formularios son el método MOVE, que mueve un
formulario en un espacio de dos dimensiones en la pantalla, y el método ZORDER
que sitúa el formulario delante o detrás de otras ventanas. Los
métodos son invocados dando nombres al objeto y cuyo método se está llamando,
listando el operador punto (.), y después listando el nombre del método. Como cualquier rutina
los métodos pueden incorporar argumentos Por
ejemplo: Este
método Show carga y muestra un formulario, dos acciones distintas que forman
ambas partes del proceso de nacimiento o inicio a un formulario (al ejecutar el
formulario de inicio se carga también primero el formulario y después se
muestra). El método Show puede ser invocado como no modal o modal. Modal
significa que no se ejecuta ningún código posterior hasta que el formulario se
oculte o se descargue. Cuando se muestra un formulario modal no se puede
producir ninguna entrada de usuario (de teclado o click del ratón) excepto para
los objetos del formulario modal. Si se activa el estilo 1 (uno) es
modal y 0 (cero) es no modal. Visual
Significa Visual.
Como
el nombre lo indica, una gran parte de la programación con Visual Basic se
realiza visualmente. Esto significa que durante el tiempo de diseño usted tiene
la capacidad de ver la forma en el programa
se vera al ejecutarse Esta es una gran ventaja sobre otros lenguajes de
programación debido a que se tiene la capacidad de cambiar y experimentas con
el diseño hasta que se esté satisfecho con los colores, proporciones e imágenes
que incluya en su programa. Programas
Para El Entorno Windows.
Visual Basic está
orientado a la realización de programas para Windows,
pudiendo incorporar todos los elementos de este entorno informático: ventanas,
botones, cajas de diálogo y de texto, botones de opción y de selección,
barras de desplazamiento, gráficos, menús, etc. Prácticamente todos los
elementos de interacción con el usuario de los que dispone Windows
95 pueden ser programados en Visual
Basic de un modo extraordinariamente sencillo. En ocasiones bastan unas
pocas operaciones con el ratón y la introducción a través del teclado de
algunas sentencias para disponer de aplicaciones con todas las características
de Windows
95. Modo
De Diseño Y Modo De Ejecución.
La aplicación Visual Basic de Microsoft
puede trabajar de dos modos distintos: en modo de diseño y en modo de
ejecución. En modo
de diseño el usuario construye interactivamente la aplicación,
colocando controles en el formulario,
definiendo sus propiedades,
desarrollando funciones para gestionar los eventos. La aplicación se
prueba en modo de ejecución. En ese caso el usuario actúa sobre el
programa (introduce eventos) y prueba cómo responde el programa. Hay algunas propiedades
de los controles que deben establecerse en modo de diseño, pero muchas
otras pueden cambiarse en tiempo de ejecución desde el programa escrito en Visual
Basic, en la forma en que más adelante se verá. También hay propiedades
que sólo pueden establecerse en modo de ejecución y que no son
visibles en modo de diseño. Formularios
Y Controles Cada
uno de los elementos gráficos que pueden formar parte de una aplicación típica
de Windows
95 es un tipo de control:
los botones, las cajas de diálogo y de texto, las cajas de selección
desplegables, los botones de opción y de selección, las barras de
desplazamiento horizontales y verticales, los gráficos, los menús, y muchos
otros tipos de elementos son controles para Visual Basic. Cada control
debe tener un nombre
a través del cual se puede hacer referencia a él en el programa. Visual
Basic proporciona nombres por
defecto que el usuario puede modificar. En
la terminología de Visual
Basic se llama formulario
(form) a una ventana. Un
formulario puede ser considerado como una especie de contenedor para los
controles. Una aplicación puede tener varios formularios, pero un único
formulario puede ser suficiente para las aplicaciones más sencillas. Los
formularios deben también tener un nombre, que puede crearse siguiendo las
mismas reglas que para los controles. Objetos
Y Propiedades
Los formularios y los distintos tipos de controles son entidades genéricas
de las que puede haber varios ejemplares concretos en cada programa. En programación
orientada a objetos (más bien basada
en objetos, habría que decir) se llama clase a estas entidades genéricas, mientras que se llama objeto
a cada ejemplar de una clase determinada. Por ejemplo, en un programa
puede varios botones, cada uno de los cuales es un objeto del tipo de control
command button, que sería la clase. Cada
formulario y cada tipo de control tienen un conjunto de propiedades
que definen su aspecto gráfico (tamaño, color, posición en la
ventana, tipo y tamaño de letra, etc.) y su forma de responder a las acciones
del usuario (si está activo o no, por ejemplo). Cada propiedad tiene un nombre
que viene ya definido por el lenguaje. Por
lo general, las propiedades de un objeto son datos que
tienen valores lógicos (true, false)
o numéricos concretos, propios de ese objeto y distintos de las de otros
objetos de su clase. Así pues, cada clase, tipo de objeto o control tiene su
conjunto de propiedades, y cada objeto o control concreto tiene unos valores
determinados para las propiedades de su clase. Casi
todas las propiedades de los objetos pueden establecerse en tiempo de diseño y
también -casi siempre- en tiempo
de ejecución. En este segundo caso se accede a sus valores por medio de las
sentencias del programa, en forma análoga a como se accede a cualquier variable
en un lenguaje de programación. Para ciertas propiedades ésta es la única
forma de acceder a ellas. Por supuesto Visual
Basic permite crear distintos tipos de variables, como más adelante se
verá. Se
puede acceder a una propiedad de un objeto por medio del nombre
del objeto a que pertenece, seguido de un punto y el nombre
de la propiedad, como por ejemplo optColor.objName. Nombres
De Objetos En
principio cada objeto de Visual Basic debe tener un
nombre, por medio del cual se hace referencia a dicho objeto. El nombre puede
ser el que el usuario desee, e incluso Visual Basic proporciona nombres
por defecto para los diversos controles. Estos nombres por defecto hacen
referencia al tipo de control y van seguidos de un número que se incrementa a
medida que se van introduciendo más controles de ese tipo en el formulario (por
ejemplo VScroll1,
para una barra de desplazamiento -ScrollBar- vertical, HScroll1,
para una barra horizontal, etc.). Los
nombres
por defecto no son adecuados porque hacen referencia al tipo de control,
pero no al uso que de dicho control está haciendo el programador. Por ejemplo,
si se utiliza una barra de desplazamiento para introducir una temperatura,
conviene que su nombre haga referencia a la palabra temperatura,
y así cuando haya que utilizar ese nombre se sabrá exactamente a qué control
corresponde. Un nombre adecuado sería por ejemplo hsbTemp, donde las tres
primeras letras indican que se trata de una horizontal
scroll bar, y las restantes (empezando por una mayúscula) que servirá
para definir una temperatura. Existe
una convención ampliamente aceptada que es la siguiente: se
utilizan siempre tres letras minúsculas que indican el tipo de control,
seguidas por otras letras (la primera mayúscula, a modo de separación)
libremente escogidas por el usuario, que tienen que hacer referencia al uso que
se va a dar a ese control. La Tabla 1.1 muestra las abreviaturas de los
controles más usuales, junto con la nomenclatura inglesa de la que derivan. Abrebiatura Control Abrebiatura Control chk
check
box cbo
combo
y drop-list box Cmd command
button dir
dir
list box drv
drive
list box fil
file
list box frm
form
fra
Frame hsb
horizontal
scroll bar img
Image lbl
label lin
Line lst
list
mnu
Menu opt
option
button pic
Picture shp
shape
txt
text
edit box tmr
timer vsb vertical
scroll bar Tabla
1.1. Abreviaturas para los controles más usuales
Para controlar con éxito la aparición y el comportamiento de los
formularios (y también de los controles) en tiempos de ejecución, debe
comprenderse en que orden se disparan los eventos. Las consideraciones del orden
de disparo de los eventos deciden generalmente por el usuario donde debe ser
colocada una parte determinada de código de respuesta de un evento. Los eventos
de formularios pueden ser divididos en los grupos siguientes: ·
Inicio. ·
Respuesta
a una acción (de usuario). ·
Vinculación. ·
Cierre. Es
importante también comprender que un evento inicia automáticamente con
frecuencia a otro evento, produciendo un efecto en cascada. Por ejemplo un
evento KeyPress no puede ser disparada sin disparar también lo eventos
KeyUp
y KeyDown. El secreto para trabajar con esta clase de situaciones es una
comprensión clara de que es lo que dispara cada evento en la secuencia; el
peligro de la codificación es iniciar un cadena sin fin de llamada a eventos
circulares recursivos. Carga
Y Descarga De Formularios Cuando
se arranca una aplicación, o más en concreto cuando se visualiza por primera
vez un formulario se producen varios eventos consecutivos: Initialize, Load, Activate y Paint. Cada uno de estos eventos se
puede aprovechar para realizar ciertas operaciones por medio de la función
correspondiente. Para
inicializar las variables definidas a nivel de módulo se suele utilizar el
evento Initialize,
que tiene lugar antes que el Load. El evento Load
se activa al cargar un formulario. Con el formulario principal esto
sucede al arrancar la ejecución de un programa; con el resto de los formularios
al mandarlos cargar desde cualquier procedimiento o al hacer referencia a alguna
propiedad o control de un formulario que no esté cargado. Al descargar un
formulario se produce el evento Unload. Si se detiene el programa desde el botón Stop
de Visual
Basic (o del menú correspondiente) o con un End, no se pasa por el evento Unload.
Para pasar por el evento Unload
es necesario cerrar la ventana con el botón de cerrar o llamarlo explícitamente.
El evento QueryUnload
se produce antes del evento Unload y permite por ejemplo enviar un mensaje de confirmación. QueryUnload.
Se dispara por un evento Unload de formulario,
antes de que se ejecute ningún código del evento Unload. QueryUnload da la
oportunidad de detener la descarga del formulario de la memoria cuando sea
apropiado, por ejemplo, cuando el usuario haya cambiado valores del formulario
sin guardar los cambios. El formulario no será descargado si la variable Cancel
está asignada como True en el procedimiento del evento QueryUnload. Es una práctica
común asignar esta variable como True
a continuación de una consulta del usuario a lo largo de las líneas de “¿Guardar
los cambios? Sí, No, Cancelar” cuando el usuario responde cancelando. La
función MsgBox
puede usarse fácilmente para dar al usuario una oportunidad de cancelar una
descarga. Unload.
Se
dispara cuando un usuario cierra el formulario usando el comando Cerrar en el
menú Control o cuando se ejecuta en código un método Unload. Unload dispara
inmediatamente un evento QueryUnload
como acabamos de describir. Se pude usar el evento Unload
(así como QueryUnload)
para realizar tareas de cierre como guardar y convalidar datos. Terminate.
Se produce cuando se eliminan de la memoria todas las referencia a una instancia
de un formulario. El
evento Load
de un formulario se suele utilizar para ejecutar una función que dé
valor a sus propiedades y a las de los controles que dependen de dicho
formulario. No se puede utilizar para dibujar o imprimir sobre el formulario,
pues en el momento en que se produce este evento el formulario todavía no está
disponible para dichas operaciones. Por ejemplo, si en el formulario debe
aparecer la salida del método Print
o de los métodos gráficos Pset,
Line y Circle
puede utilizarse el evento Paint
u otro posterior (por ejemplo, el evento GotFocus del primer control) pero no puede utilizarse el evento Load.
Se puede ocultar un formulario sin descargarlo con el método Hide
o haciendo la propiedad Visible
= False. Esto hace que el formulario desaparezca de la ventana, aunque
sus variables y propiedades sigan estando accesibles y conservando sus valores.
Para hacer visible un formulario oculto pero ya cargado se utiliza el método Show, que equivale a hacer
la propiedad Visible = True, y que genera los eventos Activate y Paint.
Si el formulario no había sido cargado previamente, el método Show
genera los cuatro eventos mencionados. Cuando
un formulario pasa a ser la ventana activa se produce el evento Activate y al dejar de serlo el evento Deactivate. En el caso de
que el formulario que va a ser activo no estuviera cargado ya, primero sucederían
los eventos Initialize,
Load y luego los eventos Activate
y Paint. Se han de crear dos formularios (frmPrincipal y frmSecundario).
El primero de ellos contendrá dos botones (cmdVerSec
y cmdSalir) y el segundo
tres (cmdHide, cmdUnload
y cmdTerminate). El
formulario principal será el primero que aparece, y sólo se verá el segundo
si se clica en el botón Cargar
Formulario. Cuando así se
haga, a medida que los eventos antes mencionados se vayan sucediendo, irán
apareciendo en pantalla unas cajas de mensajes que tendrán como texto el nombre del
evento que se acaba de producir. Según con cual de los tres botones se haga
desaparecer el segundo formulario, al volverlo a ver se producirán unos eventos
u otros, según se puede ver por los mensajes que van apareciendo con cada
evento. '
código del form. principal Private
Sub cmdCargar_Click() frmSecundario.Show End
Sub '
código del form. secundario Private
Sub cmdHide_Click() Hide End
Sub Private
Sub cmdUnload_Click() Unload
Me End
Sub Private
Sub cmdTerminate_Click() Hide Set
Form2 = Nothing End
Sub Private
Sub Form_Activate() MsgBox
("Evento Activate") End
Sub Private
Sub Form_Deactivate() MsgBox
("Evento Deactivate") End
Sub Private
Sub Form_Initialize() MsgBox
("Evento Initialize") End
Sub Private
Sub Form_Load() MsgBox
("Evento Load") End
Sub Private
Sub Form_Paint() MsgBox
("Evento Paint") End
Sub Private
Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) MsgBox
("Evento QueryUnload") End
Sub Private
Sub Form_Terminate() MsgBox
("Evento Terminate") End
Sub Private
Sub Form_Unload(Cancel As Integer) MsgBox
("Evento Unload") End
Sub Es
muy interesante realizar este ejemplo y seguir la secuencia de eventos que se
producen al hacer aparecer y desaparecer los formularios. Paint. El
evento Paint sucede cuando hay
que redibujar un formulario o PictureBox.
Esto sucede cuando esos objetos se hacen visibles después de haber
estado tapados por otros, tras haber sido movidos otras haber sido modificados
de tamaño. El
foco (focus) En
todas las aplicaciones de Windows, en cualquiera de
sus versiones, siempre hay un único control, formulario o ventana que puede
recibir clicks del ratón o entradas desde teclado. En cada momento ese control,
ventana o formulario es el que dispone del “foco” (focus). El objeto que
posee el foco está caracterizado por estar resaltado
con letra negrita, con un contorno más vivo o teniendo parpadeando el
cursor en él. Este foco puede ser trasladado de un objeto a otro por código o
por interacciones del usuario, como por ejemplo clicando con el ratón en
distintos puntos de la pantalla o pulsando la tecla Tab. Cada vez que un objeto pierde el foco se produce su evento LostFocus
y, posteriormente, el evento GotFocus
del objeto que ha recibido el foco. Dos
propiedades de muchos controles relacionadas con el foco son TabIndex
y TabStop. TabStop
determina
si el foco se va o no a posar en el objeto al pulsar la tecla Tab
(si TabStop
está a False no se puede obtener el foco mediante el tabulador) y TabIndex
determina el orden en el que esto va a suceder. Así al cargar un
formulario, el foco estará en aquel objeto cuyo TabIndex sea 0. Al
pulsar la tecla Tab
el foco irá al objeto que tenga TabIndex
= 1 y así sucesivamente. Para retroceder en esta lista se pulsa Mayúsculas+Tab.
La propiedad TabIndex se puede determinar en tiempo de diseño por medio de
la caja de propiedades, del modo habitual. Cuando a un control se le asigna un
determinado valor de TabIndex,
Visual Basic ajusta automáticamente
los valores de los demás controles (si tiene que desplazarlos hacia arriba o
hacia abajo, lo hace de modo que siempre tengan números consecutivos). Para que
un formulario
reciba el foco es necesario que no haya en él ningún control que sea
capaz de recibirlo. Un grupo de botones de opción tiene un único TabIndex,
es decir, se comporta como un único control. Para elegir una u otra de las
opciones se pueden utilizar las flechas del teclado ( y ¯). KeyPress,
KeyUp y KeyDown. El
evento KeyPress sucede cuando el
usuario pulsa y suelta determinada tecla. En este evento el único argumento KeyAscii
es necesario para conocer cuál es el código ASCII de la tecla pulsada.
El evento KeyDown se produce cuando el usuario pulsa determinada tecla y
el evento KeyUp al soltar una tecla. Los
eventos KeyUp
y KeyDown tienen un segundo
argumento llamado Shift que permiten determinar si esa tecla se ha pulsado estando
pulsadas a la vez cualquier combinación de las teclas Shift,
Alt
y Ctrl.
En
un apartado próximo se explica cómo se identifican las teclas pulsadas a
partir del argumento Shift. Eventos
Relacionados Con El Ratón. Click
y DblClick El
evento Click
se activa cuando el usuario pulsa y suelta rápidamente uno de los
botones del ratón. También puede activarse desde código (sin tocar el ratón)
variando la propiedad Value
de uno de los controles. En el caso de un formulario este evento se
activa cuando el usuario clica sobre una zona del formulario en la que no haya
ningún control o sobre un control que en ese momento esté inhabilitado
(propiedad Enabled = False). En
el caso de un control, el evento se activa cuando el usuario realiza una de las
siguientes operaciones: ·
Clicar
sobre un control con el botón derecho o izquierdo del ratón. En el caso de un
botón de comando, de un botón de selección o de un botón de opción, el
evento sucede solamente al darle un click con el botón izquierdo. ·
Seleccionar
un registro de alguno de los varios tipos listas desplegables que dispone Visual
Basic. ·
Pulsar
la barra
espaciadora cuando el foco está en un botón de comando, en un botón
de selección o en un botón de opción. ·
Pulsar
la tecla Return cuando en un formulario hay un botón que tiene su
propiedad Default = True. ·
Pulsar
la tecla Esc cuando en un formulario hay un botón que tiene su propiedad
Cancel
= True. ·
Pulsar
una combinación de teclas aceleradoras (Alt
+ otra tecla, como por ejemplo cuando de despliega el menú File de Word
con Alt+F) definidas para
activar un determinado control de un formulario. También
se puede activar el evento Click desde código
realizando una de las siguientes operaciones: ·
Hacer
que la propiedad Value de un botón de comando valga True. ·
Hacer
que la propiedad Value de un botón de opción valga True ·
Modificar
la propiedad Value de un botón de selección. El
evento DblClick
sucede al clicar dos veces seguidas sobre un control o formulario con el
botón izquierdo del ratón. MouseDown,
MouseUp y MouseMove. El
evento MouseDown sucede cuando el
usuario pulsa cualquiera de los botones del ratón, mientras que el evento MouseUp
sucede al soltar un botón que había sido pulsado. El evento MouseMove
sucede al mover el ratón sobre un control o formulario. Los
eventos MouseUp
y MouseDown tienen algunos
argumentos que merecen ser comentados. El argumento Button indica cuál de los
botones del ratón ha sido pulsado o soltado, y el argumento Shift
indica si además alguna de las teclas alt, shift o ctrl
está también pulsada. La lista con todos los posibles valores de estos
argumentos se muestra abajo. Cte simbólica Valor Acción Cte simbólica Valor Acción vbLeftButton
1 Botón izdo pulsado o soltado vbShiftMask 1 Tecla SHIFT pulsada vbRightButton
2 Botón dcho pulsado o soltado vbCtrlMask 2 Tecla CTRL pulsada vbMiddleButton
4 Botón central pulsado o soltado vbAltMask 4 Tecla ALT pulsada Valores
de los argumentos de los eventos MouseUp
y MouseDown Con
estos valores se aplica la aritmética booleana, lo cual quiere decir que si se
pulsan simultáneamente los botones izquierdo y derecho del ratón el argumento Button
valdrá 3 (1+2) y si se
pulsan las tres teclas shift, ctrl y alt
simultáneamente el argumento Shift valdrá 7 (1+2+4). DragOver
y DragDrop. El
evento DragOver
sucede mientras se está arrastrando un objeto sobre un control. Suele
utilizarse para variar la forma del cursor que se mueve con el ratón
dependiendo de si el objeto sobre el que se encuentra el cursor en ese momento
es válido para soltar o no. El evento DragDrop
sucede al concluir una operación de arrastrar y soltar. El evento DragOver
requiere de los argumentos que se muestran a continuación: Private
Sub Text1_DragOver(Source As Control, _ X
As Single, Y As Single, State As Integer) End
Sub Los
argumentos de este evento son Source que contiene el
objeto que está siendo arrastrado, X
e Y que indican la posición
del objeto arrastrado dentro del sistema de coordenadas del objeto sobre el que
se está arrastrando y State
(que es propio del DragOver,
pero no aparece en el DragDrop)
que vale 0, 1 ó 2 según se esté entrando,
saliendo o permaneciendo
dentro del mismo objeto, respectivamente. Es importante señalar que el
evento DragOver es propio del objeto sobre el que se arrastra, no del
objeto que es arrastrado. Agregando
Código Al Formulario Y Controlar Eventos. Se
han mostrados ya las formas generales en las que se agrega código ejecutable a
los procesos que controlan eventos. Es importante, sin embargo, revisar explícitamente
cómo acceder al marco propio de los eventos en el cual se sitúa ese código.
Esto le permitirá escoger la forma más rápida y fácil de acceder al marco de
control de los eventos que necesita para agregar su código. Una vez que aceda
al procedimiento adecuado para el manejo de los eventos, puede agregar código
con sólo teclearlo en la ventana Código, como hemos mostrado en los ejemplos
anteriormente. Las prácticas herramientas del lenguaje le ayudan a encontrar la
sintaxis real en cualquier situación.
Es importante tener en cuenta, como hemos señalado antes, que el código
realcionado con un procedimiento de control de eventos consistirá con
frecuencia simplemente en llamadas a procedimientos. En este caso los
procedimientos llamados contendrán el código real ejecutable. Una razón para
diseñar un programa de esta forma es que el mismo procedimiento puede ser
llamado desde diferentes controladores de eventos, simplificando así,
abreviando y aclarando la arquitectura del programa. Una técnica común es
pasar a un procedimiento llamado desde un controlador de eventos un parámetro
que indique qué controlador lo ha llamado. La ejecución en el procedimiento le
ha llamado (determinado por el parámetro).
A continuación se indican las tres formas de “alcanzar” un marco de
procedimiento para el manejo de eventos: ·
Asegúrese
de que esté abierta la ventana Proyecto ( si es necesario, seleccione el
Explorador de proyectos en el menú Ver). Seleccione el formulario al que desee
agregar código de eventos. (Si está agregando un evento a un control que ha
sido situado en un formulario, seleccione al formulario que se encuentre en el
“padre” del control.) Haga click en el botón Ver código. (También puede
hacer click con el botón derecho en el icono del formulario y seleccionar Ver Código
en el menú de contexto.) En el cuadro de lista Objeto, seleccione el formulario
o bien otro objeto (por ejemplo, un control) al cual desee agregar código de
evento. A continuación, desde el cuadro de lista Procedimiento, seleccione el
controlador del procedimiento al que va a agregar código. Observe que los
procedimientos controladores de código con código adjunto están en negrita en
el cuadro de lista Procedimiento, mientras que los que no tienen código adjunto
no lo están. ·
Haga
click con el botón derecho en el formulario (Ver figura de abajo). Seleccione
Ver código en el menú emergente. Realice su selección en lo cuadros de la
lista Objeto y Procedimiento como acabamos de describirlo. Crear,
Disparar Y Manejar Eventos Personalizados.
Para agregar un evento al módulo myClass,
utilice la instrucción Event
para declarar un evento con los argumentos que desee. Los eventos deben ser
declarados con Public. Dispare el eventos siempre que los desee dentro del módulo
de clase usando la instrucción RaiseEvent.
Pero asegúrese de suministrar todos los parámetros requeridos.
Como ejemplo, podría decir, por razones científicas, agregaré un
evento llamado Frodo a mi módulo myClass. Se dispara Frodo invocando myMenth, seguido por la
aplicación del cuadro de mensaje myMeth.
A continuación se muestra el código revisado del módulo myClass son el
evento Frodo agregando: Option
Explicit Public
Event Frodo() Private
thisVal as String Public
Property Get myProp() as Astring MyProp
= thisVal End
Property Public
Property Let myProp(ByVal vNewValue as String)
if vNewValue <> thisVal Then ThisVal = vNewValue end
Property Public
Function myMeth()
MsgBox myProp, vbInformation, “Classy!”
RaiseEvent Frodo End
Function El
paso siguiente es acceder al manejador de eventos en el módulo del formulario
que utiliza una instancia de este módulo de clase. En
la sección de Declaraciones del módulo del formulario, declare una variable
privada del tipo de clase, usando la palabra clave WithEvents: Private
WithEvents X As myClass
Cuando haga click en el evento Frodo de la lista desplegable
Procedimiento, VB crea el código del manejador de eventos de plantilla. Private
Sub X_Frodo ( ) End
Sub
Puede agregar a este evento el código que desee para comprobar que se ha
disparado realmente. Por ejemplo: Private
Sub X_Frodo ( )
MsgBox “¡Frodo ha sido disparado!”. End
Sub
No se puede crear una instancia de una variable objeto declarada usando
la palabra clave WithEvents utilizando la sintaxis Dim...As New (llamada creación
implícita). En lugar de ello, debe crearla explícitamente, usando la instrucción
Set.
A continuación, se muestra el código revisado del módulo del
formulario que crea una instancia WithEvents de myClass y responde al disparo de
Frodo: Option
Explicit Private
WithEvents X As myClass Private
Sub X_Frodo ( )
MsgBox
“¡Frodo ha sido disparado!”. End
Sub Private
Sub Form_Click ( )
Set X = New myClass
X.my
Prop = “¡Esto es un prueba!”
X.myMeth End
Sub
Eventos
Y Propiedades Relacionadas Con Gráficos El
Evento Paint El
evento Paint
se ejecuta cuando un objeto -de tipo form o pictureBox-
se hace visible. Su finalidad es que el resultado de los métodos
gráficos y del método print
aparezcan en el objeto correspondiente. Hay que tener en cuenta que si
se introducen métodos gráficos en el procedimiento form_load su resultado no
aparece al hacerse visible el formulario (es como si se dibujara sobre el
formulario antes de que éste existiera). Para que el resultados de print
y de los métodos gráficos aparezcan al hacerse visible el formulario,
deben introducirse en el procedimiento paint_form. También
los controles pictureBox
tienen evento paint,
que se ejecuta al hacerse visibles. El
evento Paint
tiene mucha importancia en relación con el refresco de los gráficos y
con la velocidad de ejecución de los mismos. En los apartados siguientes se
completará la explicación de este
tema. La
Propiedad Drawmode Esta
es una propiedad bastante importante y difícil de manejar, sobre todo si se
quieren realizar cierto tipo de acciones con los métodos gráficos. La opción
por defecto es la nº 13: Copy Pen. La
propiedad DrawMode
controla cómo se dibujan los controles line y shape,
así como los resultados de los métodos gráficos pset,
line y circle.
La opción por defecto hace que cada elemento gráfico se dibuje con el color
correspondiente (por defecto el foreColor)
sobre lo dibujado anteriormente. En ocasiones esto no es lo más adecuado pues,
por ejemplo, si se superponen dos figuras del mismo color o si se dibuja con el backColor,
los gráficos resultan indistinguibles. Para
entender cómo funciona DrawMode es necesario
tener claros los conceptos de color complementario
y
combinación
de dos colores. El color complementario de un color es el color que
sumado con él da el blanco
(&HFFFFFF&). Por ejemplo, el color complementario del rojo
(&H0000FF&) es el cyan (&HFFFF00&). El
color
complementario se puede obtener mediante la simple resta del color
blanco menos el color original. Por su parte la combinación de dos colores es el color que resulta de aplicar
el operador lógico Or: el color resultante tiene sus bits a 1 si alguno o los dos de los colores originales tiene a 1 el bit
correspondiente. La explicación de los distintos valores de la propiedad DrawMode
que se obtiene del Help
es la siguiente: Constant
Setting Description VbBlackness
1
Blackness. VbNotMergePen
2
Not Merge Pen— Inverse of setting 15 (Merge Pen). VbMaskNotPen
3
Mask Not Pen — Combination of the colors common to the background
color and the inverse of the pen. VbNotCopyPen
4
Not Copy Pen — Inverse of setting 13 (Copy Pen). VbMaskPenNot
5
Mask Pen Not — Combination of the colors common to both the pen
and the inverse of the display. VbInvert
6
Invert — Inverse of the display color. VbXorPen
7
Xor Pen — Combination of the colors in the pen and in the display color,
but not in both. VbNotMaskPen
8
Not Mask Pen — Inverse of setting 9 (Mask Pen). VbMaskPen
9
Mask Pen — Combination of the colors common to both the pen and
the display. VbNotXorPen
10
Not Xor Pen — Inverse of setting 7 (Xor Pen). VbNop
11
Nop — No operation — output remains unchanged. In effect, this setting
turns drawing off. VbMergeNotPen
12
Merge Not Pen — Combination of the display color and the inverse of
the pen color. VbCopyPen
13
Copy Pen (Default) — Color specified by the ForeColor
property. VbMergePenNot
14
Merge Pen Not — Combination of the pen color and the inverse of the
display color. VbMergePen
15
Merge Pen — Combination of the pen color and the display color. VbWhiteness
16
Whiteness. El
explicar más a fondo las distintas aplicaciones de esta propiedad esta fuera
del alcance de este manual introductorio. Planos
de dibujo (Layers) Visual
Basic considera
tres
planos superpuestos (layers): el plano frontal, el plano intermedio y el
plano de fondo. Es importante saber en qué plano se introduce cada elemento gráfico
para entender cuándo unos elementos se superpondrán a otros en la pantalla. En
principio, los tres planos se
utilizan del siguiente modo: 1.
En el plano
frontal (Front) se dibujan todos
los controles, excepto los controles gráficos y las labels. 2.
En el plano
intermedio se representan los controles
gráficos y labels. 3.
En el plano
de fondo se representa el color de
fondo y el resultado de los métodos
gráficos. Estas
reglas tienen excepciones que dependen de la propiedad AutoRedraw,
de la propiedad ClipControl y de si los métodos gráficos se utilizan o no
asociados al evento paint. La
Propiedad Autoredraw Esta
propiedad tiene una gran importancia. En principio, todas las aplicaciones de Windows
permiten superponer ventanas y/u otros elementos gráficos, recuperando
completamente el contenido de cualquier ventana cuando ésta se selecciona de
nuevo y viene a primer plano (es la ventana activa). A esto se llama redibujar
(redraw) la ventana. Cualquier aplicación que se desarrolle en Visual
Basic debe ser capaz de redibujarse correctamente, pero para ello el
programador debe conocer algo de la propiedad AutoRedraw. Por
defecto, Visual
Basic redibuja siempre los controles que aparecen en un formulario.Esto
no sucede sin embargo con el resultado de los métodos
gráficos y de print.
Para que la salida de estos métodos se redibuje es necesario adoptar uno de los
dos métodos siguientes: 1.
Si en el form
o pictureBox la propiedad AutoRedraw
está en false: ·
Si
los métodos
gráficos y print están en el procedimiento correspondiente al evento paint
se redibujan en el plano de fondo (los
métodos vuelven a ejecutarse, por lo que el proceso puede ser lento en ciertos
casos). ·
Si
los métodos
gráficos y print están fuera del evento paint no se redibujan. 2.
Si
en el form o pictureBox
la propiedad AutoRedraw
está en true ·
Si
los métodos
gráficos y print están en el evento paint
se ignoran. ·
Si
los métodos
gráficos y print están fuera del evento paint se redibujan
guardando en memoria una copia de la zona de pantalla a refrescar. Este es la
forma más rápida de conseguir que los gráficos y el texto se redibujen. Tiene
el inconveniente de necesitar más memoria.
La
propiedad AutoRedraw
de los forms
y de las pictureBox es independiente, por lo que las dos formas
anteriores de conseguir que los gráficos se redibujen se pueden utilizar
conjuntamente, por ejemplo una en el formulario y otra en las pictureBox. La
Propiedad ClipControl. Por
defecto esta propiedad de las forms y pixtureBox
está en true. En este caso los controles están siempre por encima de la
salida de los métodos gráficos, por lo que nunca por ejemplo una línea se
dibujará sobre un botón o una barra de desplazamiento (los controles están
siempre en el plano frontal o en el plano intermedio, según se ha explicado
antes). Cuando
la propiedad ClipControl
se pone a false
se produce una doble circunstancia: ·
Los
métodos gráficos situados en un evento paint
siempre se dibujan en el plano de
fondo y por tanto respetan los controles. ·
Los
métodos gráficos situados fuera de un evento paint
se dibujan sobre cualquier elemento que esté en la pantalla, incluidos
los controles. Conclusión
La Programación Orientada a Eventos facilitan el proceso de programación
visual por su practicidad al generar rápidamente algunas aplicaciones basadas
en objetos visuales. Ayuda al programador novato en el rápido aprendizaje de
desarrollo de nuevos pragramas con alta calidad en muy poco tiempo. Bibliografía Harold
Davis. Visual Basic: Los secretos de Visual Basic: Los secretos más ocultos y
los trucos mejor guardados de la programación: Foster City, California:
Ediciones Anaya Multimedia S.A. 884 páginas. ISBN = 84-415-0231-5. Internet
= http://www.ciudadfutura/estudiantesonline.com Internet
= http://www.monografias.com Autor: Armin
Molas Publicación enviada por Armin Molas Contactar mailto:amolas@data.com.py Código ISPN de la Publicación EpZVVEZlZkhhXVihqe Publicado Friday 30 de January de 2004 Ultimas Publicaciones en ilustrados.com
ilustrados.com nace con el fin difundir el conocimiento publicando trabajos de investigación, monografias, tesis, presentaciones powerpoint y afines. Publicar trabajos en ilustrados.com ha alcanzado prestigio y reconocimiento internacional siendo cada vez más el número de académicos, empresas, investigadores, científicos que consultan las publicaciones de nuestro portal. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||