suporte Automação da Interface do Usuário para arrastar e soltar
O Microsoft Automação da Interface do Usuário define dois padrões de controle para dar suporte a cenários de arrastar e soltar, o padrão de controle Arrastar e o padrão de controle DropTarget. Você implementa o padrão de controle Arrastar para um elemento que pode ser arrastado e o padrão de controle DropTarget para um elemento que pode receber um elemento arrastado; ou seja, um destino de soltar. Os dois padrões de controle expõem informações que uma tecnologia adaptativa pode usar para ajudar um usuário de acessibilidade a concluir uma operação de arrastar e soltar.
Estilos de arrastar
Ao implementar o padrão de controle Arrastar para um elemento arrastável, você precisa decidir se deseja implementar o estilo de arrastar de origem/destino ou o estilo de arrastar somente origem .
Estilo de origem/destino
No estilo de origem/destino de arrastar e soltar, o elemento arrastado (a "origem") e o elemento drop-target (o "destino") são distintos e cada um gera um conjunto distinto de eventos. Aqui está o ciclo de vida de uma operação de arrastar que usa o estilo de origem/destino:
- Quando o usuário inicia uma operação de arrastar:
- A origem gera o evento DragStart (UIA_Drag_DragStartEventId).
- A origem define a propriedade IDragProvider::IsGrabbed comoTRUE.
- Os destinos atualizam suas propriedades DropTargetEffect .
- O destino gera o evento DragEnter (UIA_DropTarget_DragEnterEventId).
- O destino gera o evento DragLeave (UIA_DropTarget_DragLeaveEventId).
- A origem gera o evento DragCancel (UIA_Drag_DragCancelEventId).
- A origem define a propriedade IDragProvider::IsGrabbed comoFALSE.
- A origem gera o evento DragComplete (UIA_Drag_DragCompleteEventId).
- A origem define a propriedade IDragProvider::IsGrabbed comoFALSE.
- O destino define a propriedade IDropTargetProvider::D ropTargetEffect para indicar o efeito que ocorreu.
- O destino gera o evento Dropped (UIA_DropTarget_DroppedEventId).
Quando a operação de arrastar entra em uma região de destino:
Quando a operação de arrastar deixa uma região de destino:
Quando o usuário libera o item arrastado sobre um não-destino:
Quando o usuário libera o item arrastado sobre um destino:
Os eventos dos objetos de origem e de destino estão intimamente relacionados, mas distintos. Os dados sobre o que está sendo arrastado vêm da origem, enquanto os dados sobre "o que poderia acontecer" e "o que aconteceu" vêm do destino.
Quando uma operação de arrastar está em andamento, o item arrastado pode ser arrastado para dentro e para fora das regiões de destino várias vezes antes da conclusão da operação.
Qualquer destino de descarte que precise atualizar sua propriedade IDropTargetProvider::D ropTargetEffect em tempo real deve gerar um evento de propriedade adicional alterado nessa propriedade.
Estilo somente origem
O estilo de arrastar somente origem permite que um provedor evite implementar destinos de soltar. Não implementar destinos de descarte ajuda a reduzir o custo de implementação, mas não fornece aos aplicativos cliente de acessibilidade nenhuma informação sobre o objeto que recebeu a queda. Aqui está o ciclo de vida de uma operação de arrastar que usa o estilo somente de origem:
- Quando o usuário inicia uma operação de arrastar:
- A origem gera o evento DragStart (UIA_Drag_DragStartEventId).
- A origem define a propriedade IDragProvider::IsGrabbed comoTRUE.
- A origem define a propriedade IDragProvider::D ropEffect como o valor apropriado.
- A origem define a propriedade IDragProvider::D ropEffect como o valor apropriado.
- A origem gera o evento DragCancel (UIA_Drag_DragCancelEventId).
- A origem define a propriedade IDragProvider::IsGrabbed comoFALSE.
- A origem gera o evento DragComplete (UIA_Drag_DragCompleteEventId).
- A origem define a propriedade IDragProvider::D ropEffect para indicar o efeito que ocorreu quando o item foi descartado.
Quando a operação de arrastar entra em uma região de destino:
Quando a operação de arrastar deixa uma região de destino:
Quando o usuário libera o item arrastado sobre um não-destino:
Quando o usuário libera o item arrastado sobre um destino:
Arrastando vários itens
Se um provedor implementar operações de arrastar e soltar em que o usuário pode arrastar vários objetos ao mesmo tempo, o provedor usará os estilos de origem/destino ou somente origem, conforme descrito na seção anterior, mas com uma pequena diferença. Quando o usuário inicia a operação de arrastar, o provedor cria um elemento de origem master que representa o conjunto completo de itens que estão sendo arrastados. O elemento de origem master gera todos os eventos em nome do conjunto de itens arrastados; os itens não geram eventos próprios.
- Quando o usuário inicia uma operação de arrastar:
- O provedor cria o elemento de origem master.
- O elemento de origem master gera o evento DragStart (UIA_Drag_DragStartEventId).
- O elemento de origem master define a propriedade IDragProvider::IsGrabbed comoTRUE.
- O elemento de origem master atualiza a lista de itens capturados para incluir todos os itens sendo arrastados para que o método GetGrabbedItems possa recuperar a lista.
Para esse ponto em diante, o elemento de origem master executa a mesma função que a do elemento de origem, conforme descrito na seção anterior.
Interfaces do cliente para arrastar e soltar
Automação da Interface do Usuário aplicativos cliente usam as interfaces IUIAutomationDragPattern e IUIAutomationDropTargetPattern para acessar informações de arrastar e soltar de elementos da interface do usuário.