|
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.
| Valor | Corresponde a... |
| ssShift | Una de las teclas de mayúscula. |
| ssAlt | La tecla <ALT>. |
| ssCtrl | La tecla <Control>. |
| ssRight | El botón derecho del ratón. |
| ssLeft | El botón izquierdo del ratón. |
| ssMiddle | El botón central del ratón. |
| ssDouble | Los 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_.
| Constante | Tecla que representa |
| VK_0,VK_1, ..., VK_9 | Los dígitos del 0 al 9. |
| VK_NUMPAD0, VK_NUMPAD1 | Los dígitos del 0 al 9 de parte numérica |
| VK_A, VK_B, ..., VK_Z | Las teclas de la A a la Z. |
| VK_BACK | Borrado hacia atrás |
| VK_TAB | Tabulador |
| VK_RETURN | Intro |
| VK_SHIFT | Mayúsculas |
| VK_CONTROL | Control |
| VK_MENU | Alt |
| VK_PAUSE | Pausa/Inter |
| VK_CAPITAL | Fija Mayúscula |
| VK_ESCAPE | Escape |
| VK_SPACE | Barra Espaciadora |
| VK_PRIOR | RePág |
| VK_NEXT | AvPág |
| VK_END | Fin |
| VK_HOME | Inicio |
| VK_LEFT | Flecha hacia izquierda |
| VK_RIGHT | Flecha hacia derecha |
| VK_UP | Flecha hacia arriba |
| VK_DOWN | Flecha hacia abajo |
| VK_INSERT | Insert |
| VK_DELETE | Supr |
| 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_F12 | Teclas de función |
| VK_NUMLOCK | BloqNum |
| VK_SCROLL | BloqDespl |
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.
| Valor | Significado |
| caFree | El form es cerrado |
| caMinimize | El form no se cierra, simplemente se minimiza |
| caHide | El form no se cierra, se oculta |
| caNone | No 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.
|