arroba más más - Programación e Internet  arroba más más - Programación e Internet
Estás en: Inicio > Cursos > Entornos de desarrollo > El entorno Delphi > Curso básico de Delphi > - Eventos de TForm
 
CAPÍTULOS

SECCIONES

SITIOS RECOMENDADOS

OTROS SITIOS DE LA AUTORA

En línea desde el 7 de noviembre de 2000

2.IV. Eventos de TForm

Eventos generados por el ratón

Hay varios eventos posibles:

  • OnMouseMove. Este evento es recibido por un componente a medida que el cursor del ratón se mueve sobre él. Este evento lleva asociados varios parámetros, como son X e Y, que representan la posición actual del cursor expresada en puntos, y Shift, un conjunto que puede contener valores dependiendo de qué teclas y botones estén pulsados mientras el ratón se mueve.

    ValorCorresponde a...
    ssShiftUna de las teclas de mayúscula.
    ssAltLa tecla <ALT>.
    ssCtrlLa tecla <Control>.
    ssRightEl botón derecho del ratón.
    ssLeftEl botón izquierdo del ratón.
    ssMiddleEl botón central del ratón.
    ssDoubleLos botones izquierdo y derecho del ratón.

  • OnMouseDown. Se genera cuando se pulsa cualquiera de los botones del ratón, recibiéndolo aquel control que en ese momento se encuentra bajo el cursor. Además de los parámetros X,Y y Shift, con el mismo significado que en OnMouseMove, el método de respuesta a este evento también recibirá el parámetro Button, que nos permitirá saber qué botón ha sido el que ha producido el evento. Los valores posibles son mbRight, mbLeft y mbMiddle, según se trate del botón derecho, izquierdo o central.
  • OnMouseUp. Cada vez que se libera un botón del ratón sobre un control, éste recibe el evento OnMouseUp, cuyos parámetros son idénticos a los del evento anterior.
  • OnClick. Aunque este evento también puede venir producido por la pulsación de la barra espaciadora sobre un control o la pulsación de la tecla <Intro> o <Escape>, en la mayoría de las ocasiones denota una pulsación en el botón izquierdo del ratón sobre algún control.
  • OnDblClick. Este evento lo recibirá un control cuando se realice una doble pulsación con el botón izquierdo del ratón, teniendo el cursor situado sobre dicho control.

Eventos de teclado

Aunque generalmente un form no recibe directamente las pulsaciones de teclado, sino que éstas van directamente a alguno de los controles, es posible interceptarlas. Los eventos que nos permitirán hacerlo son:

  • OnKeyDown. Se produce al pulsarse una tecla, cuyo código es facilitado en el parámetro Key. Al igual que los eventos de ratón, también se recibe el parámetro Shift, mediante el cual podremos saber si hay pulsadas otras teclas o botones de ratón. Tengamos en cuenta que el código recibido no es el código ASCII, sino el código virtual de la tecla pulsada.
  • OnKeyUp. Este evento se genera al liberar una tecla. El método de respuesta correspondiente recibirá los mismos parámetros descritos en el evento OnKeyDown.
  • OnKeyPress. A diferencia de lo que ocurre con OnKeyDown, que se genera con cualquier tecla alfanumérica, de función, control, etc., este evento sólo se produce por la pulsación de las teclas "normales", excluyendo de este conjunto las de función, edición y, en general, todas aquellas que no dispongan de código ASCII. El parámetro Key que se recibe como parámetro corresponde precisamente al código ASCII de la tecla pulsada.

Tanto OnKeyDown como OnKeUp reciben un código de tecla y no un código ASCII del carácter pulsado. Esto les permite detectar la pulsación de aquellas teclas que no tienen asociado un carácter, como puedan ser las de función o las de edición. Los códigos de teclas están representados por una serie de constantes que comienzan con las iniciales VK_.


ConstanteTecla que representa
VK_0,VK_1, ..., VK_9Los dígitos del 0 al 9.
VK_NUMPAD0, VK_NUMPAD1Los dígitos del 0 al 9 de parte numérica
VK_A, VK_B, ..., VK_ZLas teclas de la A a la Z.
VK_BACKBorrado hacia atrás
VK_TABTabulador
VK_RETURNIntro
VK_SHIFTMayúsculas
VK_CONTROLControl
VK_MENUAlt
VK_PAUSEPausa/Inter
VK_CAPITALFija Mayúscula
VK_ESCAPEEscape
VK_SPACEBarra Espaciadora
VK_PRIORRePág
VK_NEXTAvPág
VK_ENDFin
VK_HOMEInicio
VK_LEFTFlecha hacia izquierda
VK_RIGHTFlecha hacia derecha
VK_UPFlecha hacia arriba
VK_DOWNFlecha hacia abajo
VK_INSERTInsert
VK_DELETESupr
VK_ADD+ en teclado numérico
VK_SUBSTRACT- en teclado numérico
VK_MULTIPLY* en teclado numérico
VK_DECIMAL. en teclado numérico
VK_DIVIDE/ en teclado numérico
VK_F1, VK_F2, ..., VK_F12Teclas de función
VK_NUMLOCKBloqNum
VK_SCROLLBloqDespl

Arrastrar y soltar

Relacionados con esta operación un form puede recibir los dos siguientes eventos:

  • OnDragOver. Se produce cuando sobre un determinado control se desplaza un elemento que está siendo "arrastrado". Además del parámetro Sender se recibe otro parámetro del tipo TObject; Source, que nos permitirá acceder al componente que está siendo objeto de la operación de arrastrar y soltar. Mediante los parámetros X e Y podremos conocer la posición actual del evento. Mediante el parámetro State obtendremos información acerca del estado de la operación. Dicho parámetro puede tomar los valores dsDragEnter, dsDragMove o dsDragLeave, según que el objeto arrastrado acabe de entrar sobre el control, se esté moviendo sobre él o lo acabe de abandonar, respectivamente. Por último encontramos el parámetro Accept, una variable de tipo Boolean a la que tendremos que asignar el valor True si el objeto arrastrado puede ser soltado sobre el control, o False en caso contrario.
  • OnDragDrop. A diferencia del evento anterior, que puede recibirse múltiples veces a medida que el objeto arrastrado se mueve por el control, el evento OnDragDrop sólo se recibe cuando dicho objeto es "soltado" sobre el control, liberando la pulsación del botón izquierdo del ratón. El método de respuesta a este evento recibirá los parámetros X, Y y Source, conteniendo respectivamente las coordenadas donde el objeto ha sido soltado y una referencia del mismo.

Otros eventos de TForm

  • OnCreate. Se genera cuando el form va a ser creado, permitiendo así establecer valores iniciales en las propiedades, variables del objeto o cualquier otra operación previa a la creación.
  • OnActive. Este evento se produce en el momento en que el form se convierte en la ventana activa en el entorno.
  • OnShow. Antes de que un form se haga visible, siempre se genera el evento OnShow, permitiendo así realizar cualquier operación previa a la visualización.
  • OnHide. De forma similar al evento anterior, éste se produce justo antes de que el form sea ocultado.
  • OnDeactivate. Este evento se genera cuando el form se vuelve inactivo, porque se haya cambiado a otra ventana o aplicación.
  • OnClose. Cuando un form ha dejado de ser útil en pantalla, lo habitual es cerrarlo, bien mediante uno de los controles de la ventana o utilizando un método del objeto. Antes de realizar el cierre de la ventana se generará este evento, que recibe como parámetro una variable llamada Action, a la cual asignaremos uno de estos valores.

    ValorSignificado
    caFreeEl form es cerrado
    caMinimizeEl form no se cierra, simplemente se minimiza
    caHideEl form no se cierra, se oculta
    caNoneNo se permite el cierre del form

  • OnCloseQuery. Al igual que el anterior, este evento se genera cuando se va a cerrar el form, recibiéndose como parámetro la variable CanClose, a la que daremos el valor True o False, dependiendo de que se permita o no dicho cierre, respectivamente.
  • OnDestroy. Generalmente un form que no va a ser utilizado más en el programa, depués de cerrarse ocultándose se destruye, liberando la memoria que ocupaba. Este evento se produce en ese momento.
  • OnEnter y OnExit. A medida que los distintos componentes de un form se van haciendo activos o inactivos, por el desplazamiento entre ellos, se irán generando porque es su primera visualización o bien porque se activa cuando tenía otras ventanas encima que ocultaban parte de su contenido.
  • OnResize. Cada vez que el tamaño de un form sea modificado durante la ejecución se generará este evento, que podemos aprovechar para modificar la disposición de los controles en su interior según el nuevo tamaño.

Autor: Lola Cárdenas Luque
Última actualización: 24 de junio de 2001
- Propiedades de TForm | - Métodos de TForm
Copyright © 2000 - 2005, Lola Cárdenas Luque - Todos los derechos reservados