UI Automation prise en charge du glisser-déplacer
Microsoft UI Automation définit deux modèles de contrôle pour la prise en charge des scénarios de glisser-déplacer, le modèle de contrôle Glisser et le modèle de contrôle DropTarget. Vous implémentez le modèle de contrôle Glisser pour un élément qui peut être déplacé, et le modèle de contrôle DropTarget pour un élément qui peut recevoir un élément déplacé ; c’est-à-dire une cible de déplacement. Les deux modèles de contrôle exposent des informations qu’une technologie d’assistance peut utiliser pour aider un utilisateur d’accessibilité à effectuer une opération de glisser-déplacer.
- Faire glisser les styles
- Faire glisser plusieurs éléments
- Interfaces clientes pour le glisser-déplacer
Faire glisser les styles
Lorsque vous implémentez le modèle de contrôle Glisser pour un élément pouvant faire glisser, vous devez décider d’implémenter le style de glissement source/cible ou le style de glissement source uniquement .
Style source/cible
Dans le style source/cible de glisser-déplacer, l’élément déplacé (la « source ») et l’élément de la cible déroulante (la « cible ») sont distincts et déclenchent chacun un ensemble distinct d’événements. Voici le cycle de vie d’une opération de glissement qui utilise le style source/cible :
- Lorsque l’utilisateur démarre une opération de glissement :
- La source déclenche l’événement DragStart (UIA_Drag_DragStartEventId).
- La source définit la propriété IDragProvider::IsGrabbed sur TRUE.
- Les cibles mettent à jour leurs propriétés DropTargetEffect .
- La cible déclenche l’événement DragEnter (UIA_DropTarget_DragEnterEventId).
- La cible déclenche l’événement DragLeave (UIA_DropTarget_DragLeaveEventId).
- La source déclenche l’événement DragCancel (UIA_Drag_DragCancelEventId).
- La source définit la propriété IDragProvider::IsGrabbed sur FALSE.
- La source déclenche l’événement DragComplete (UIA_Drag_DragCompleteEventId).
- La source définit la propriété IDragProvider::IsGrabbed sur FALSE.
- La cible définit la propriété IDropTargetProvider::D ropTargetEffect pour indiquer l’effet qui s’est produit.
- La cible déclenche l’événement Dropped (UIA_DropTarget_DroppedEventId).
Lorsque l’opération de glissement entre dans une région cible :
Lorsque l’opération de glissement quitte une région cible :
Lorsque l’utilisateur libère l’élément déplacé sur une autre cible :
Lorsque l’utilisateur libère l’élément déplacé sur une cible :
Les événements des objets source et cible sont étroitement liés, mais distincts. Les données sur ce qui est déplacé proviennent de la source, tandis que les données sur « ce qui pourrait se produire » et « ce qui s’est passé » proviennent de la cible.
Lorsqu’une opération de glissement est en cours, l’élément déplacé peut être déplacé vers et hors des régions cibles un nombre de fois avant la fin de l’opération.
Toute cible drop qui doit mettre à jour sa propriété IDropTargetProvider::D ropTargetEffect à la volée doit déclencher un événement de modification de propriété supplémentaire sur cette propriété.
Style source uniquement
Le style de glisser-source uniquement permet à un fournisseur d’éviter d’implémenter des cibles de déplacement. Le fait de ne pas implémenter de cibles de suppression permet de réduire le coût d’implémentation, mais ne fournit aucune information aux applications clientes d’accessibilité sur l’objet qui a reçu la suppression. Voici le cycle de vie d’une opération de glissement qui utilise le style source uniquement :
- Lorsque l’utilisateur démarre une opération de glissement :
- La source déclenche l’événement DragStart (UIA_Drag_DragStartEventId).
- La source définit la propriété IDragProvider::IsGrabbed sur TRUE.
- La source définit la propriété IDragProvider::D ropEffect sur la valeur appropriée.
- La source définit la propriété IDragProvider::D ropEffect sur la valeur appropriée.
- La source déclenche l’événement DragCancel (UIA_Drag_DragCancelEventId).
- La source définit la propriété IDragProvider::IsGrabbed sur FALSE.
- La source déclenche l’événement DragComplete (UIA_Drag_DragCompleteEventId).
- La source définit la propriété IDragProvider::D ropEffect pour indiquer l’effet qui s’est produit lorsque l’élément a été supprimé.
Lorsque l’opération de glissement entre dans une région cible :
Lorsque l’opération de glissement quitte une région cible :
Lorsque l’utilisateur libère l’élément déplacé sur une autre cible :
Lorsque l’utilisateur libère l’élément déplacé sur une cible :
Faire glisser plusieurs éléments
Si un fournisseur implémente des opérations de glisser-déplacer dans lesquelles l’utilisateur peut faire glisser plusieurs objets en même temps, le fournisseur utilise les styles source/cible ou source uniquement, comme décrit dans la section précédente, mais avec une petite différence. Lorsque l’utilisateur commence l’opération de glissement, le fournisseur crée un élément source master qui représente l’ensemble complet des éléments qui sont déplacés. L’élément source master déclenche tous les événements pour le compte de l’ensemble d’éléments déplacés ; les éléments ne déclenchent aucun événement qui leur est propre.
- Lorsque l’utilisateur démarre une opération de glissement :
- Le fournisseur crée l’élément source master.
- L’élément source master déclenche l’événement DragStart (UIA_Drag_DragStartEventId).
- L’élément source master affecte à la propriété IDragProvider::IsGrabbed la valeur TRUE.
- L’élément source master met à jour la liste des éléments saisis pour inclure tous les éléments déplacés afin que la méthode GetGrabbedItems puisse récupérer la liste.
Pour ce point sur, l’élément source master exécute le même rôle que celui de l’élément source, comme décrit dans la section précédente.
Interfaces clientes pour le glisser-déplacer
UI Automation applications clientes utilisent les interfaces IUIAutomationDragPattern et IUIAutomationDropTargetPattern pour accéder aux informations de glisser-déplacer à partir des éléments d’interface utilisateur.