ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Delegados En C#


Enviado por   •  15 de Junio de 2015  •  1.812 Palabras (8 Páginas)  •  240 Visitas

Página 1 de 8

Introducción

En la programación de los diferentes tipos de lenguajes, existen diversos tipos de eventos las cuales cada uno de ellos tienen un fin diferente de acuerdo a su función y en la manera de cómo se propagan.

PROPAGACIÓN DE EVENTOS

Los eventos del teclado y del ratón están vinculados con la ventana visible más pequeña que contiene el puntero en ese instante. Hay tres casos en el mecanismo de propagación:

• Si se ha seleccionado el evento en esa ventana, se notifica al cliente.

• Si no está seleccionado pero está incluido en do_not_propagate_mask, el evento no se notifica.

• Si no está incluido en ninguna de las máscaras el evento se propaga a la ventana padre y se repite el proceso hasta que se llegue a la ventana raíz.

El mecanismo de propagación descrito tiene dos excepciones:

• El enfoque (focus) del teclado

• Posesión (grab) del teclado y puntero

Propagación de eventos significa que, cuando se emite un evento en un widget particular, puede pasarse a su widget padre (y ese widget puede pasárselo a su padre, y así sucesivamente) y, si el padre tiene un manejador de eventos, se llamará.

Al contrario que otros eventos, los eventos del teclado primero se envían a la ventana de nivel superior (Gtk:Windows), donde se verifican los atajos del teclado establecidos (teclas aceleradoras y combinaciones, utilizadas para seleccionar elementos del menú desde el teclado). Después de esto (y asumiendo que no se manejó el evento), se envía al widget que tiene el foco, y la propagación comienza desde allí. El evento se propagará hasta que alcance el widget de mayor nivel, o hasta que detenga la propagación devolviendo true desde un manejador de eventos.

Tenga en cuenta que, después de haber cancelado un evento, no se llamará a ninguna otra función (incluso si es del mismo widget).

El enfoque del teclado

En cada momento hay una ventana que tiene el enfoque del teclado. Los eventos del teclado estarán asociados sólo a la ventana con el enfoque y sus descendientes. Dos casos:

• Si el puntero está fuera de estas ventanas, el evento se asocia a la ventana con enfoque.

• Si el puntero está dentro, se lleva a cabo el mecanismo de propagación habitual.

Por defecto el enfoque está en la ventana raíz y se cambia con la primitiva XSetInputFocus. Normalmente, lo hace el gestor de ventanas.

Posesión del teclado y puntero

Un cliente puede establecer un grab sobre el teclado o ratón para asegurarse de que todos los eventos que produzca el dispositivo se le notifiquen sólo a él. Hay dos tipos:

• grab activo. Tiene lugar inmediatamente y se mantiene hasta que el cliente lo desactiva.

• grab pasivo. El programa especifica que la posesión tendrá lugar cuando se pulse una determinada tecla o botón del ratón y se mantendrá hasta que se repita la acción.

Ademas del ratón y el teclado, un cliente puede tomar posesión del servidor evitando no sólo la propagación de eventos a otros clientes sino también el procesamiento de sus peticiones.

Algunos eventos

Cada evento lleva asociado una estructura XEvent que proporciona información detallada sobre el evento. Algunos eventos:

KeyPress, KeyRelease

Tecla pulsada y liberada. La estructura del evento contiene un código de tecla dependiente del servidor. La aplicación debe usar XLookupString para obtener el valor ASCII.

ButtonPress, ButtonRelease

Respectivamente, botón del ratón pulsado y liberado.

MotionNotify

Indica que el ratón se ha movido. Hay tres tipos máscaras: PointerMotionMask (notifica cualquier movimiento), PointerMotionHintMask (notifica los movimientos de forma no continua) y ButtonMotionMask (sólo notifica movimiento cuando un botón está pulsado).

Expose

Se genera un evento por cada zona de la ventana que se ha hecho visible.

VisibilityNotify

Notifica cambios en la visibilidad de una ventana.

EnterWindow, LeaveWindow

Informa que el puntero ha entrado o salido de una ventana respectivamente.

PropertyNotify

Indica que se han producido cambios en el valor asociado a una propiedad.

ConfigureNotify

Informa del cambio de configuración (geometría u orden de apilamiento) de una ventana.

MapNotify

Notifica que una ventana ha sido proyectada.

SubstructureRedirectMask

Cuando un cliente (y sólo uno) selecciona esta máscara sobre una ventana, las peticiones de otros clientes para proyectar, cambiar la configuración o modificar el orden de apilamiento de una ventana hija de la especificada, no las lleva a cabo el servidor sino que manda un evento al cliente (redirección). Este mecanismo lo usa el gestor de ventanas.

ClientMessage

Usado para comunicación entre clientes. Está siempre seleccionado.

EVENTOS DE CONTROL

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.

Se pueden realizar en cualquier control: click, doble click, movimiento del ratón. A estos eventos se les puede asociar código para que se ejecute al producir el evento.

MouseMove: al mover el raton por encima del control.

...

Descargar como (para miembros actualizados)  txt (11.2 Kb)  
Leer 7 páginas más »
Disponible sólo en Clubensayos.com