Acerca de los patrones de control Text y TextRange

El contenido textual de un control se expone mediante el patrón de control Texto , que representa el contenido de un contenedor de texto como una secuencia de texto. El patrón de control Text requiere la compatibilidad del patrón de control TextRange para exponer atributos de estilo y formato. El patrón de control TextRange admite el patrón de control Text mediante la representación de intervalos de texto contiguos o múltiples, separados (o intervalos) en un contenedor de texto con una colección de puntos de conexión inicial y final. El patrón de control TextRange admite funcionalidades como selección, comparación, recuperación y recorrido.

Nota:

El patrón de control Texto no proporciona un medio para insertar o modificar texto. Sin embargo, dependiendo del control, esto puede realizarse mediante el patrón de control Valor de Microsoft Automatización de la interfaz de usuario o mediante la entrada directa del teclado. También hay un patrón TextEdit que admite el cambio mediante programación al texto.

 

La funcionalidad descrita en este tema es fundamental para los proveedores de tecnología de asistencia y sus usuarios finales. Las tecnologías de asistencia pueden usar Automatización de la interfaz de usuario para recopilar información completa de formato de texto para el usuario y proporcionar navegación mediante programación y selección de texto por TextUnit (carácter, palabra, línea o párrafo).

Este tema contiene las siguientes secciones:

Automatización de la interfaz de usuario TextPattern y Text Services Framework

Text Services Framework (TSF) es un marco de sistema sencillo y escalable que permite los servicios de lenguaje natural y la entrada de texto avanzada en el escritorio y en las aplicaciones. Además de proporcionar interfaces para que las aplicaciones expongan su almacén de texto, también admite metadatos para el almacén de texto.

TSF se diseñó para aplicaciones que necesitan insertar entradas en escenarios compatibles con contexto. El patrón de control Text , sin embargo, es una solución de solo lectura que está pensada para proporcionar acceso optimizado a un almacén de texto para lectores de pantalla y dispositivos Braille.

Las tecnologías accesibles que requieren acceso de solo lectura a un almacén de texto pueden usar el patrón de control Texto, pero necesitarán la funcionalidad de TSF para la entrada contextual.

Para obtener más información, vea Text Services Framework.

Tipos de controles

El Automatización de la interfaz de usuario tipo de control Edit y el tipo de control Document deben admitir el patrón de control Text. Para mejorar la accesibilidad, Microsoft recomienda que los tipos de control ToolTip y Text también admitan el patrón de control Text, pero no es necesario.

Interfaces de proveedor

Automatización de la interfaz de usuario proveedores admiten el patrón de control Text para un control mediante la implementación de las interfaces ITextProvider e ITextRangeProvider. Estas interfaces exponen información detallada de atributos para texto en el control y proporcionan funcionalidades de navegación sólidas.

Un proveedor no necesita admitir todos los atributos de texto si el control carece de compatibilidad con cualquier atributo determinado.

Un proveedor debe admitir los métodos ITextProvider::GetSelection e ITextRangeProvider::Select si el control admite la selección de texto o la colocación del cursor de texto (o símbolo de intercalación del sistema) dentro del área de texto. Si el control no admite esta funcionalidad, no es necesario admitir ninguno de estos métodos. Sin embargo, el control debe exponer el tipo de selección de texto que admite mediante la implementación de la propiedad ITextProvider::SupportedTextSelection .

Un proveedor siempre debe admitir las constantes TextUnit , TextUnit_Character y TextUnit_Document, así como cualquier otro que sea capaz de admitir.

Nota:

El proveedor puede omitir la compatibilidad con un TextUnit específico aplazando a la siguiente unidad más grande admitida en el siguiente orden: TextUnit_Character, TextUnit_Format, TextUnit_Word, TextUnit_Line, TextUnit_Paragraph, TextUnit_Page y TextUnit_Document.

 

Interfaces de cliente

Automatización de la interfaz de usuario las aplicaciones cliente usan las interfaces IUIAutomationTextPattern e IUIAutomationTextRange para acceder al contenido textual de un control de texto. Los clientes usan IUIAutomationTextPattern para seleccionar intervalos de texto denominados intervalos de texto y recuperar punteros a interfaces IUIAutomationTextRange para los intervalos. La interfaz IUIAutomationTextRange permite a los clientes manipular el intervalo de texto y recuperar información sobre el texto del intervalo, incluidos atributos como el nombre de fuente, el color de primer plano, el estilo de subrayado, etc. Para obtener más información, consulte Identificadores de atributo de texto.

Rendimiento

El patrón de control Text se basa en llamadas entre procesos para la mayor parte de su funcionalidad, por lo que no proporciona un mecanismo de almacenamiento en caché para mejorar el rendimiento cuando procesa el contenido. Se puede acceder a otros patrones de control de Microsoft Automatización de la interfaz de usuario mediante el método IUIAutomationElement::GetCachedPattern.

Una técnica para mejorar el rendimiento es asegurarse de que Automatización de la interfaz de usuario clientes intenten recuperar bloques de texto de tamaño moderado mediante el método IUIAutomationTextRange::GetText. Por ejemplo, el uso de GetText para recuperar caracteres individuales incurrirá en aciertos entre procesos para cada carácter, mientras que no especificar una longitud máxima al llamar a GetText incurrirá en un acierto entre procesos, pero puede tener una latencia alta en función del tamaño del intervalo de texto.

Patrón de texto y objetos incrustados virtualizados

Siempre que sea posible, una implementación de proveedor de ITextProvider e ITextRangeProvider debe admitir todo el texto de un documento, incluido cualquier texto fuera de la ventanilla. En el caso de objetos de texto fuera de pantalla o incrustados virtualizados, los proveedores deben admitir el patrón de control VirtualizedItem (IVirtualizedItemProvider).

Si un documento está virtualizado mientras la secuencia de texto completa sigue estando disponible, la propiedad ITextProvider::D ocumentRange recuperará un intervalo de texto que incluya todo el documento. Sin embargo, al llamar al método ITextRangeProvider se recuperará una colección de objetos virtualizados que representan todos los objetos incrustados del documento. Para interactuar con un objeto incrustado virtualizado, los clientes deben llamar al método IVirtualizedItemProvider::Realize, lo que hace que los elementos sean totalmente accesibles como elementos Automatización de la interfaz de usuario. Los clientes deben seguir un proceso similar para trabajar con elementos de cuadrícula en una tabla insertada en la que una parte de la tabla está fuera de pantalla y virtualizada.

Usar el tipo de control personalizado con el patrón de control de texto

Aunque el patrón de control Text admite muchos atributos de texto y objetos incrustados, no es posible definir de antemano todos los posibles elementos de documento y tipos de presentación. En el caso de los elementos de documento que no son compatibles con los atributos existentes o los tipos de control estándar, los proveedores pueden usar las características de extensibilidad proporcionadas por el tipo de control personalizado de Automatización de la interfaz de usuario.

En el caso de las aplicaciones y las interfaces de usuario basadas en presentaciones de página, la presentación de límites y diseño de "página" también se puede expresar como un objeto incrustado que tiene un tipo de control personalizado (es decir, LocalizedControlType="page"). De este modo, el objeto incrustado puede hospedar otros elementos de página que no pueden formar parte fácilmente de la secuencia de texto del documento, como los campos de encabezado y pie de página de cada página, como elementos secundarios del objeto incrustado "page". Como alternativa, cada objeto "page" puede admitir el patrón de control Text de forma independiente, que funciona bien para aplicaciones como herramientas de creación para presentaciones de presentación con diapositivas o entornos de publicación de escritorio basados en páginas.

Duración de un intervalo de texto

Si es posible, un proveedor debe asegurarse de que cualquier cambio de texto, como eliminaciones, inserciones y movimientos, se refleje en el intervalo de texto asociado. Si no es posible actualizar el intervalo de texto, el proveedor debe generar un evento de UIA_Text_TextChangedEventId para notificar a los clientes que el intervalo de texto ya no es válido y se debe recuperar uno nuevo.

Conceptual

Cómo Automatización de la interfaz de usuario admite objetos incrustados

Información general acerca de los patrones de control de UI Automation

Automatización de la interfaz de usuario compatibilidad con contenido textual

Trabajar con controles basados en texto

Otros recursos

Text Services Framework (TSF)