Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Programación orientada a Eventos




Enviado por amolas



    • Objetivo
    • Introducción a la programación
      orientada a eventos
    • 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.
    • 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
    • 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:

    Form1.Show 1

    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

    Orden De Disparo De Eventos.

    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.

    Eventos Generales

    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
      doble click en el formulario al cual desee agregar
      código. Realice su selección desde el cuadro de
      lista Objeto y desde el cuadro de lista Procedimiento como
      acabamos de describir.
    • 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

    Ahora
    puede utilizar la lista desplegable Objeto para acceder al objeto
    X. Una vez seleccionado X en la lista desplegable Objeto, puede
    acceder al evento Frodo de la lista desplegable Procedimiento,
    tal como se muestra en la figura:

    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

    Si
    ejecuta el proyecto y hace
    click en el formulario, verá primero el mensaje myMeth. A
    continuación, verá el cuadro de mensaje invocado en
    el manejador de eventos Frodo, como se muestra en la figura de
    abajo:

    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.
    1. 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 =

    Internet = http://www.monografias.com

     

     

    Autor:

    armin molas

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter