Compatibilidad de automatización de la interfaz de usuario para arrastrar y colocar
Automatización de la interfaz de usuario de Microsoft define dos patrones de control para admitir escenarios de arrastrar y colocar, el patrón de control de arrastrar y el patrón de control dropTarget . Se implementa el patrón de control Drag para un elemento que se puede arrastrar y el patrón de control DropTarget para un elemento que puede recibir un elemento arrastrado; es decir, un destino de colocación. Los dos patrones de control exponen información que una tecnología de asistencia puede usar para ayudar a un usuario de accesibilidad a completar una operación de arrastrar y colocar.
- arrastrar estilos
- arrastrar varios elementos
- interfaces de cliente de para de arrastrar y colocar
Arrastrar estilos
Al implementar el patrón de control de arrastrar para un elemento arrastrable, debe decidir si debe implementar el de arrastrar de origen o destino o el estilo de arrastre de solo origen de arrastrar.
Estilo de origen/destino
En el estilo de origen y destino de arrastrar y colocar, el elemento arrastrado (el "origen") y el elemento de destino desplegable (el "destino") son distintos y cada uno genera un conjunto distinto de eventos. Este es el ciclo de vida de una operación de arrastre que usa el estilo de origen o destino:
- Cuando el usuario inicia una operación de arrastre:
- El origen genera el evento DragStart (UIA_Drag_DragStartEventId).
- El origen establece la propiedad IDragProvider::IsGrabbed en TRUE.
- Los destinos actualizan sus propiedades DropTargetEffect.
- El destino genera el evento DragEnter (UIA_DropTarget_DragEnterEventId).
- El destino genera el evento DragLeave (UIA_DropTarget_DragLeaveEventId).
- El origen genera el evento DragCancel (UIA_Drag_DragCancelEventId).
- El origen establece la propiedad IDragProvider::IsGrabbed en FALSE.
- El origen genera el evento DragComplete (UIA_Drag_DragCompleteEventId).
- El origen establece la propiedad IDragProvider::IsGrabbed en FALSE.
- El destino establece la propiedad IDropTargetProvider::D ropTargetEffect para indicar el efecto que se produjo.
- El destino genera el evento Dropped (UIA_DropTarget_DroppedEventId).
Cuando la operación de arrastre entra en una región de destino:
Cuando la operación de arrastre deja una región de destino:
Cuando el usuario libera el elemento arrastrado sobre un no destino:
Cuando el usuario libera el elemento arrastrado sobre un destino:
Los eventos de los objetos de origen y destino están estrechamente relacionados, pero distintos. Los datos sobre lo que se arrastra proviene del origen, mientras que los datos sobre "lo que podría suceder" y "lo que sucedió" proceden del destino.
Cuando una operación de arrastre está en curso, el elemento arrastrado se puede arrastrar dentro y fuera de las regiones de destino cualquier número de veces antes de que se complete la operación.
Cualquier destino de colocación que necesite actualizar su IDropTargetProvider::D ropTargetEffect propiedad sobre la marcha debe generar un evento de cambio de propiedad adicional en esa propiedad.
Estilo de solo origen
El estilo de arrastre de solo origen permite a un proveedor evitar la implementación de destinos de colocación. No implementar destinos de colocación ayuda a reducir el costo de implementación, pero no proporciona a las aplicaciones cliente de accesibilidad ninguna información sobre el objeto que recibió la eliminación. Este es el ciclo de vida de una operación de arrastre que usa el estilo de solo origen:
- Cuando el usuario inicia una operación de arrastre:
- El origen genera el evento DragStart (UIA_Drag_DragStartEventId).
- El origen establece la propiedad IDragProvider::IsGrabbed en TRUE.
- El origen establece la propiedad IDragProvider::D ropEffect en el valor adecuado.
- El origen establece la propiedad IDragProvider::D ropEffect en el valor adecuado.
- El origen genera el evento DragCancel (UIA_Drag_DragCancelEventId).
- El origen establece la propiedad IDragProvider::IsGrabbed en FALSE.
- El origen genera el evento DragComplete (UIA_Drag_DragCompleteEventId).
- El origen establece la propiedad IDragProvider::D ropEffect para indicar el efecto que tuvo lugar cuando se quitó el elemento.
Cuando la operación de arrastre entra en una región de destino:
Cuando la operación de arrastre deja una región de destino:
Cuando el usuario libera el elemento arrastrado sobre un no destino:
Cuando el usuario libera el elemento arrastrado sobre un destino:
Arrastrar varios elementos
Si un proveedor implementa operaciones de arrastrar y colocar en las que el usuario puede arrastrar varios objetos al mismo tiempo, el proveedor usa los estilos de origen/destino o de solo origen como se describe en la sección anterior, pero con una pequeña diferencia. Cuando el usuario inicia la operación de arrastrar, el proveedor crea un elemento de origen maestro que representa el conjunto completo de elementos que se están arrastrando. El elemento de origen maestro genera todos los eventos en nombre del conjunto de elementos arrastrados; los elementos no generan ningún evento propio.
- Cuando el usuario inicia una operación de arrastre:
- El proveedor crea el elemento de origen maestro.
- El elemento de origen maestro genera el evento DragStart (UIA_Drag_DragStartEventId).
- El elemento de origen maestro establece la propiedad IDragProvider::IsGrabbed en TRUE.
- El elemento de origen maestro actualiza la lista de elementos capturados para incluir todos los elementos que se arrastran para que el método GetGrabbedItems pueda recuperar la lista.
Para ese punto, el elemento de origen maestro realiza el mismo rol que el del elemento de origen que se describe en la sección anterior.
Interfaces de cliente para arrastrar y colocar
Las aplicaciones cliente de automatización de la interfaz de usuario usan las interfaces de IUIAutomationDragPattern y IUIAutomationDropTargetPatter n para acceder a la información de arrastrar y colocar de los elementos de la interfaz de usuario.