Compartir a través de


Información general sobre TextPattern y objetos incrustados

Nota

Esta documentación está dirigida a los desarrolladores de .NET Framework que quieran usar las clases de automatización de la interfaz de usuario administradas definidas en el espacio de nombres System.Windows.Automation. Para ver la información más reciente acerca de la automatización de la interfaz de usuario, consulte Windows Automation API: automatización de la interfaz de usuario.

Esta introducción describe cómo Automatización de la interfaz de usuario de Microsoft expone objetos insertados o elementos secundarios en un contenedor o documento de texto.

En Automatización de la interfaz de usuario, un objeto insertado es cualquier elemento que tenga límites no textuales; por ejemplo, una imagen, un hipervínculo, una tabla o un tipo de documento como una hoja de cálculo de Microsoft Excel o un archivo de Windows Media de Microsoft. Esto difiere de la definición estándar, según la cual se crea un elemento en una aplicación y se incrusta o vincula en otra. Si el objeto se puede editar en la aplicación original, es irrelevante en el contexto de Automatización de la interfaz de usuario.

Objetos incrustados y el árbol de automatización de la interfaz de usuario

Los objetos insertados se tratan como elementos individuales en la vista de control del árbol de Automatización de la interfaz de usuario. Se exponen como elementos secundarios del contenedor de texto para que resulten accesibles con el mismo modelo que otros controles en Automatización de la interfaz de usuario.

Tabla insertada con imagen en un contenedor de texto Ejemplo de un contenedor de texto con objetos insertados de tabla, imagen e hipervínculo

Vista de contenido del ejemplo anterior Ejemplo de la vista de contenido de una parte del contenedor de texto anterior

Exponer objetos incrustados con TextPattern y TextPatternRange

Si se usan de forma conjunta, la clase de patrón de control de TextPattern y la clase TextPatternRange exponen métodos y propiedades que facilitan la navegación y la consulta de los objetos incrustados.

El contenido textual (o texto interno) de un contenedor de texto y un objeto incrustado, como un hipervínculo o una celda de tabla, se expone como una secuencia de texto continua única en las vistas de control y contenido del árbol de Automatización de la interfaz de usuario. Los límites del objeto se ignoran. Si un cliente de Automatización de la interfaz de usuario recupera el texto con el objetivo de realizar alguna declaración, interpretarlo o analizarlo de alguna manera, el intervalo de texto se debe comprobar en los casos especiales (por ejemplo, una tabla con contenido textual u otros objetos incrustados). Para ello, puede llamar a GetChildren para obtener un AutomationElement para cada objeto incrustado y, a continuación, llamar a RangeFromChild para obtener un intervalo de texto para cada elemento. Esto se realiza recursivamente hasta que se recupera todo el contenido textual.

Intervalos de texto que distribuyen los objetos insertados. Ejemplo de una secuencia de texto con objetos insertados y sus distribuciones de intervalos

Cuando es necesario atravesar el contenido de un intervalo de texto, se realizan en segundo plano una serie de pasos para que el método Move pueda ejecutarse correctamente.

  1. El intervalo de texto se normaliza, es decir, se contrae, en un intervalo degenerado en el extremo Start , y el extremo End queda superfluo. Este paso es necesario para quitar la ambigüedad en situaciones en las que un intervalo de texto abarca límites de TextUnit: por ejemplo, {The URL https://www.microsoft.com is embedded in text donde "{ " y "} " son los puntos de conexión del intervalo de texto.

  2. El intervalo resultante se mueve hacia atrás en DocumentRange , al principio del límite TextUnit solicitado.

  3. El intervalo resultante se mueve hacia delante o hacia atrás en DocumentRange , en función del número solicitado de límites TextUnit .

  4. A continuación, el intervalo se expande desde un estado de intervalo degenerado moviendo el extremo End en función de un límite TextUnit solicitado.

Ajustes de intervalo mediante Move & ExpandToEnclosingUnit Ejemplos de cómo se ajusta un intervalo de texto para Move() y ExpandToEnclosingUnit()

Escenarios comunes

Las secciones siguientes muestran ejemplos de los escenarios más comunes que incluyen objetos incrustados.

Leyenda para los ejemplos que se muestran:

{ = Start

} = End

Ejemplo 1: intervalo de texto que contiene un hipervínculo de texto incrustado

{The URL https://www.microsoft.com is embedded in text}.

Método al que se llama Resultado
GetText Devuelve la cadena The URL https://www.microsoft.com is embedded in text.
GetEnclosingElement Devuelve el elemento AutomationElement más interno que incluye el intervalo de texto (en este caso, el elemento AutomationElement que representa al propio proveedor de texto).
GetChildren Devuelve un elemento AutomationElement que representa el control de hipervínculo.
RangeFromChild , donde AutomationElement es el objeto que ha devuelto el método GetChildren anterior. Devuelve el intervalo que representa https://www.microsoft.com.

Ejemplo 2: intervalo de texto que se extiende parcialmente por un hipervínculo de texto incrustado

La dirección URL https://{[www]} está insertada en el texto.

Método al que se llama Resultado
GetText Devuelve la cadena "www".
GetEnclosingElement Devuelve el elemento AutomationElement más interno que incluye el intervalo de texto (en este caso, el control de hipervínculo).
GetChildren Devuelve null , ya que el intervalo de texto no se extiende por toda la cadena de dirección URL.

Ejemplo 3: intervalo de texto que se extiende parcialmente por el contenido de un contenedor de texto. El contenedor de texto incluye un hipervínculo de texto incrustado que no forma parte del intervalo de texto.

{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.

Método al que se llama Resultado
GetText Devuelve la cadena "La dirección URL".
GetEnclosingElement Devuelve el elemento AutomationElement más interno que incluye el intervalo de texto (en este caso, el elemento AutomationElement que representa al propio proveedor de texto).
Move con parámetros de (TextUnit.Word, 1). Mueve el intervalo de texto a "http", ya que el texto del hipervínculo se compone de palabras individuales. En este caso, el hipervínculo no se considera un único objeto.

La dirección URL {[http]} está insertada en el texto.

Imagen

Ejemplo 1: intervalo de texto que contiene una imagen incrustada

{La imagen Imagen insertada de ejemplo está insertada en el texto}.

Método al que se llama Resultado
GetText Devuelve la cadena "La está incrustada en el texto". No se puede esperar que se incluya en la secuencia de texto el texto alternativo asociado con la imagen.
GetEnclosingElement Devuelve el elemento AutomationElement más interno que incluye el intervalo de texto (en este caso, el elemento AutomationElement que representa al propio proveedor de texto).
GetChildren Devuelve un elemento AutomationElement que representa el control de imagen.
RangeFromChild , donde AutomationElement es el objeto que ha devuelto el método GetChildren anterior. Devuelve el intervalo degenerado que representa "Imagen insertada de ejemplo".

Ejemplo 2: intervalo de texto que se extiende parcialmente por el contenido de un contenedor de texto. El contenedor de texto incluye una imagen incrustada que no forma parte del intervalo de texto.

{La imagen} Imagen insertada de ejemplo está insertada en el texto.

Método al que se llama Resultado
GetText Devuelve la cadena "La imagen".
GetEnclosingElement Devuelve el elemento AutomationElement más interno que incluye el intervalo de texto (en este caso, el elemento AutomationElement que representa al propio proveedor de texto).
Move con parámetros de (TextUnit.Word, 1). Mueve el intervalo de texto a "está". Dado que solo se consideran parte de la secuencia de texto los objetos incrustados basados en texto, la imagen de este ejemplo no afecta a Move ni al valor que devuelve (en este caso, 1).

Tabla

Tabla que se ha usado en los ejemplos:

Celda con imagen Celda con texto
Imagen insertada de ejemplo X
Imagen insertada de ejemplo 2 esté
Imagen insertada de ejemplo 3

Imagen para Z
Z

Ejemplo 1: obtener el contenedor de texto del contenido de una celda.

Método al que se llama Resultado
GetItem con parámetros (0,0) Devuelve el elemento AutomationElement que representa el contenido de la celda de tabla (en este caso, el elemento es un control de texto).
RangeFromChild , donde AutomationElement es el objeto que ha devuelto el método GetItem anterior. Devuelve el intervalo que abarca la imagen Imagen insertada de ejemplo.
GetEnclosingElement para el objeto que ha devuelto el método RangeFromChild anterior. Devuelve el elemento AutomationElement que representa la celda de tabla (en este caso, el elemento es un control de texto que admite TableItemPattern).
GetEnclosingElement para el objeto que ha devuelto el método GetEnclosingElement anterior. Devuelve el elemento AutomationElement que representa la tabla.
GetEnclosingElement para el objeto que ha devuelto el método GetEnclosingElement anterior. Devuelve el elemento AutomationElement que representa al propio proveedor de texto.

Ejemplo 2: obtener el contenido de texto de una celda.

Método al que se llama Resultado
GetItem con parámetros de (1,1). Devuelve el elemento AutomationElement que representa el contenido de la celda de tabla (en este caso, el elemento es un control de texto).
RangeFromChild , donde AutomationElement es el objeto que ha devuelto el método GetItem anterior. Devuelve "Y".

Consulte también