Share via


Sobre os padrões de controle Text e TextRange

O conteúdo textual de um controle é exposto usando o padrão de controle Texto , que representa o conteúdo de um contêiner de texto como um fluxo de texto. O padrão de controle Texto requer o suporte do padrão de controle TextRange para expor atributos de formato e estilo. O padrão de controle TextRange dá suporte ao padrão de controle Texto, representando intervalos de texto contíguos ou múltiplos e não contíguos (ou intervalos) em um contêiner de texto com uma coleção de pontos de extremidade de início e de extremidade. O padrão de controle TextRange dá suporte a funcionalidades como seleção, comparação, recuperação e passagem.

Observação

O padrão de controle Texto não fornece um meio de inserir ou modificar texto. No entanto, dependendo do controle, isso pode ser feito usando o padrão de controle Valor do Microsoft Automação da Interface do Usuário ou por meio da entrada direta do teclado. Há também um padrão TextEdit que dá suporte à alteração programática no texto.

 

A funcionalidade descrita neste tópico é vital para fornecedores de tecnologia adaptativa e seus usuários finais. As tecnologias adaptativas podem usar Automação da Interface do Usuário para coletar informações completas de formatação de texto para o usuário e fornecer navegação programática e seleção de texto por TextUnit (caractere, palavra, linha ou parágrafo).

Este tópico contém as seguintes seções:

Automação da Interface do Usuário TextPattern e a Estrutura de Serviços de Texto

A Estrutura de Serviços de Texto (TSF) é uma estrutura de sistema simples e escalonável que permite serviços de linguagem natural e entrada de texto avançada na área de trabalho e em aplicativos. Além de fornecer interfaces para aplicativos exporem seu repositório de texto, ele também dá suporte a metadados para o repositório de texto.

O TSF foi projetado para aplicativos que precisam injetar entrada em cenários com reconhecimento de contexto. O padrão de controle texto , no entanto, é uma solução somente leitura que se destina a fornecer acesso otimizado a um repositório de texto para leitores de tela e dispositivos Braille.

Tecnologias acessíveis que exigem acesso somente leitura a um repositório de texto podem usar o padrão de controle Texto, mas precisarão da funcionalidade do TSF para entrada com reconhecimento de contexto.

Para obter mais informações, consulte Text Services Framework.

Tipos de controle

O tipo de controle Editar Automação da Interface do Usuário e o tipo de controle Documento devem dar suporte ao padrão de controle Texto. Para melhorar a acessibilidade, a Microsoft recomenda que os tipos de controle Dica de Ferramenta e Texto também ofereçam suporte ao padrão de controle Texto, mas isso não é necessário.

Interfaces do provedor

Automação da Interface do Usuário provedores dão suporte ao padrão de controle De texto para um controle implementando as interfaces ITextProvider e ITextRangeProvider. Essas interfaces expõem informações detalhadas de atributo para texto no controle e fornecem recursos de navegação robustos.

Um provedor não precisará dar suporte a todos os atributos de texto se o controle não tiver suporte para nenhum atributo específico.

Um provedor deve dar suporte aos métodos ITextProvider::GetSelection e ITextRangeProvider::Select se o controle der suporte à seleção de texto ou ao posicionamento do cursor de texto (ou cursor do sistema) dentro da área de texto. Se o controle não der suporte a essa funcionalidade, ele não precisará dar suporte a nenhum desses métodos. No entanto, o controle deve expor o tipo de seleção de texto que dá suporte implementando a propriedade ITextProvider::SupportedTextSelection .

Um provedor sempre deve dar suporte às constantes TextUnit , TextUnit_Character e TextUnit_Document, bem como a qualquer outra que seja capaz de dar suporte.

Observação

O provedor pode ignorar o suporte para um TextUnit específico adiando para a próxima maior unidade com suporte na seguinte ordem: TextUnit_Character, TextUnit_Format, TextUnit_Word, TextUnit_Line, TextUnit_Paragraph, TextUnit_Page e TextUnit_Document.

 

Interfaces do cliente

Automação da Interface do Usuário aplicativos cliente usam as interfaces IUIAutomationTextPattern e IUIAutomationTextRange para acessar o conteúdo textual de um controle de texto. Os clientes usam IUIAutomationTextPattern para selecionar intervalos de texto chamados intervalos de texto e recuperar ponteiros para interfaces IUIAutomationTextRange para os intervalos. A interface IUIAutomationTextRange permite que os clientes manipulem o intervalo de texto e recuperem informações sobre o texto no intervalo, incluindo atributos como nome da fonte, cor de primeiro plano, estilo de sublinhado e assim por diante. Para obter mais informações, consulte Identificadores de atributo de texto.

Desempenho

O padrão de controle texto depende de chamadas entre processos para a maior parte de sua funcionalidade, portanto, ele não fornece um mecanismo de cache para melhorar o desempenho quando processa o conteúdo. Outros padrões de controle no Microsoft Automação da Interface do Usuário podem ser acessados usando o método IUIAutomationElement::GetCachedPattern.

Uma técnica para melhorar o desempenho é garantir que Automação da Interface do Usuário clientes tentem recuperar blocos de texto de tamanho moderado usando o método IUIAutomationTextRange::GetText. Por exemplo, o uso de GetText para recuperar caracteres únicos incorrerá em ocorrências entre processos para cada caractere, enquanto não especificar um comprimento máximo ao chamar GetText incorrerá em uma ocorrência entre processos, mas pode ter alta latência dependendo do tamanho do intervalo de texto.

Padrão de texto e objetos inseridos virtualizados

Sempre que possível, uma implementação de provedor de ITextProvider e ITextRangeProvider deve dar suporte a todo o texto de um documento, incluindo qualquer texto fora do visor. Para texto fora da tela ou objetos inseridos virtualizados, os provedores devem dar suporte ao padrão de controle VirtualizedItem (IVirtualizedItemProvider).

Se um documento for virtualizado enquanto todo o fluxo de texto ainda estiver disponível, a propriedade ITextProvider::D ocumentRange recuperará um intervalo de texto que inclui todo o documento. No entanto, chamar o método ITextRangeProvider recuperará uma coleção de objetos virtualizados que representam todos os objetos inseridos no documento. Para interagir com um objeto inserido virtualizado, os clientes devem chamar o método IVirtualizedItemProvider::Realize, o que torna os itens totalmente acessíveis como elementos Automação da Interface do Usuário. Os clientes devem seguir um processo semelhante para trabalhar com elementos de grade em uma tabela inserida em que uma parte da tabela está fora da tela e virtualizada.

Usando o tipo de controle personalizado com o padrão de controle de texto

Embora o padrão de controle Texto dê suporte a muitos atributos de texto e objetos inseridos, não é possível definir com antecedência todos os possíveis elementos de documento e tipos de apresentação. Para elementos de documento que não têm suporte pelos atributos existentes ou tipos de controle padrão, os provedores podem usar os recursos de extensibilidade fornecidos pelo tipo de controle Automação da Interface do Usuário Personalizado.

Para aplicativos e interfaces do usuário baseadas em apresentações de página, a apresentação de limite e layout de "page" também pode ser expressa como um objeto inserido que tem um tipo de controle personalizado (ou seja, LocalizedControlType="page"). Dessa forma, o objeto inserido pode hospedar outros elementos de página que não podem fazer parte facilmente do fluxo de texto do documento, como os campos de cabeçalho e rodapé de cada página, como filhos do objeto inserido "page". Como alternativa, cada objeto de "página" pode dar suporte ao padrão de controle texto de forma independente, que funciona bem para aplicativos como ferramentas de criação para apresentações de apresentações de slides ou ambientes de publicação de área de trabalho baseados em página.

Tempo de vida de um intervalo de texto

Se possível, um provedor deve garantir que todas as alterações de texto, como exclusões, inserções e movimentações, sejam refletidas no intervalo de texto associado. Se a atualização do intervalo de texto não for possível, o provedor deverá gerar um evento UIA_Text_TextChangedEventId para notificar os clientes de que o intervalo de texto não é mais válido e que um novo deve ser recuperado.

Conceitual

Como Automação da Interface do Usuário dá suporte a objetos inseridos

Visão Geral de Padrões de Controle de Automação de Interface de Usuário

suporte Automação da Interface do Usuário para conteúdo textual

Trabalhando com controles baseados em texto

Outros recursos

Estrutura de Serviços de Texto