Interfaz ITextRange (tom.h)

Los objetos ITextRange son herramientas eficaces de edición y enlace de datos que permiten a un programa seleccionar texto en un artículo y, a continuación, examinar o cambiar ese texto.

Herencia

La interfaz ITextRange hereda de la interfaz IDispatch . ITextRange también tiene estos tipos de miembros:

Métodos

La interfaz ITextRange tiene estos métodos.

 
ITextRange::CanEdit

Determina si se puede editar el intervalo especificado.
ITextRange::CanPaste

Determina si se puede pegar un objeto de datos, utilizando un formato especificado, en el intervalo actual.
ITextRange::ChangeCase

Cambia las mayúsculas y minúsculas de este intervalo según el parámetro Type.
ITextRange::Collapse

Contrae el intervalo de texto especificado en un punto degenerado al principio o al final del intervalo.
ITextRange::Copy

Copia el texto en un objeto de datos.
ITextRange::Cut

Corta el texto sin formato o enriquecido en un objeto de datos o en el Portapapeles, según el parámetro pVar.
ITextRange::D elete

Imita las teclas DELETE y BACKSPACE, con y sin la tecla CTRL presionada.
ITextRange::EndOf

Mueve los extremos de este intervalo al final de la última unidad superpuesta del intervalo.
ITextRange::Expand

Expande este intervalo para que las unidades parciales que contenga estén completamente contenidas.
ITextRange::FindText

Busca hasta recuento de caracteres para el texto proporcionado por bstr. La posición inicial y la dirección también se especifican mediante Count y los criterios de coincidencia se proporcionan mediante Flags.
ITextRange::FindTextEnd

Busca hasta contar caracteres para la cadena, bstr, comenzando desde end cp del intervalo.
ITextRange::FindTextStart

Busca hasta los caracteres Count de la cadena, bstr, empezando por start cp (cpFirst).
ITextRange::GetChar

Obtiene el carácter en la posición inicial del intervalo.
ITextRange::GetDuplicate

Obtiene un duplicado de este objeto de intervalo.
ITextRange::GetEmbeddedObject

Recupera un puntero al objeto incrustado al principio del intervalo especificado, es decir, en cpFirst. El intervalo debe ser un punto de inserción o solo debe seleccionar el objeto incrustado.
ITextRange::GetEnd

Obtiene la posición del carácter final del intervalo.
ITextRange::GetFont

Obtiene un objeto ITextFont con los atributos de carácter del intervalo especificado.
ITextRange::GetFormattedText

Obtiene un objeto ITextRange con el texto con formato del intervalo especificado.
ITextRange::GetIndex

Recupera el índice de historia del parámetro Unit en la posición del carácter Start del intervalo especificado.
ITextRange::GetPara

Obtiene un objeto ITextPara con los atributos de párrafo del intervalo especificado.
ITextRange::GetPoint

Recupera coordenadas de pantalla para la posición del carácter inicial o final en el intervalo de texto, junto con la posición dentro de la línea.
ITextRange::GetStart

Obtiene la posición del carácter inicial del intervalo.
ITextRange::GetStoryLength

Obtiene el recuento de caracteres del artículo del intervalo.
ITextRange::GetStoryType

Obtenga el tipo del artículo del rango.
ITextRange::GetText

Obtiene el texto sin formato de este intervalo. La propiedad Text es la propiedad predeterminada de la interfaz ITextRange.
ITextRange::InRange

Determina si este intervalo está dentro o en el mismo texto que un intervalo especificado.
ITextRange::InStory

Determina si el artículo de este rango es el mismo que el de un intervalo especificado.
ITextRange::IsEqual

Determina si este intervalo tiene las mismas posiciones de caracteres y el mismo caso que los de un intervalo especificado.
ITextRange::Move

Mueve el punto de inserción hacia delante o hacia atrás un número especificado de unidades. Si el intervalo no es desndegenerado, el intervalo se contrae a un punto de inserción en cualquier extremo, en función de Count y, a continuación, se mueve.
ITextRange::MoveEnd

Mueve la posición final del intervalo.
ITextRange::MoveEndUntil

Mueve el extremo del intervalo a la posición de carácter del primer carácter encontrado en el conjunto de caracteres especificado por Cset, siempre que el carácter se encuentre dentro de los caracteres Count del final del intervalo.
ITextRange::MoveEndWhile

Mueve el final del intervalo Caracteres count o simplemente pega todos los caracteres contiguos que se encuentran en el conjunto de caracteres especificados por Cset, lo que sea menos.
ITextRange::MoveStart

Mueve la posición inicial del intervalo el número especificado de unidades en la dirección especificada.
ITextRange::MoveStartUntil

Mueve la posición inicial del intervalo la posición del primer carácter que se encuentra en el conjunto de caracteres especificado por Cset, siempre que el carácter se encuentre dentro de los caracteres Count de la posición inicial.
ITextRange::MoveStartWhile

Mueve la posición inicial del intervalo Caracteres Count o simplemente pega todos los caracteres contiguos que se encuentran en el conjunto de caracteres especificados por Cset, lo que sea menor.
ITextRange::MoveUntil

Busca hasta Recuento de caracteres para el primer carácter del conjunto de caracteres especificado por Cset. Si se encuentra un carácter, el intervalo se contrae hasta ese punto. El inicio de la búsqueda y la dirección también se especifican mediante Count.
ITextRange::MoveWhile

Comienza en un extremo especificado de un intervalo y busca mientras los caracteres pertenecen al conjunto especificado por Cset y mientras que el número de caracteres es menor o igual que Count.
ITextRange::P aste

Pega texto de un objeto de datos especificado.
ITextRange::ScrollIntoView

Desplaza el intervalo especificado en la vista.
ITextRange::Select

Establece las posiciones inicial y final, y los valores de historia de la selección activa, en los de este intervalo.
ITextRange::SetChar

Establece el carácter en la posición inicial del intervalo.
ITextRange::SetEnd

Establece la posición final del intervalo.
ITextRange::SetFont

Establece los atributos de carácter de este intervalo en los del objeto ITextFont especificado.
ITextRange::SetFormattedText

Establece el texto con formato de este texto de intervalo en el texto con formato del intervalo especificado.
ITextRange::SetIndex

Cambia este intervalo a la unidad especificada del artículo.
ITextRange::SetPara

Establece los atributos de párrafo de este intervalo en los del objeto ITextPara especificado.
ITextRange::SetPoint

Cambia el intervalo en función de un punto especificado en o hacia arriba (dependiendo de Extender) el punto (x, y) alineado según Type.
ITextRange::SetRange

Ajusta los puntos de conexión de intervalo a los valores especificados.
ITextRange::SetStart

Establece la posición del carácter para el inicio de este intervalo.
ITextRange::SetText

Establece el texto de este intervalo.
ITextRange::StartOf

Mueve el intervalo termina hasta el inicio de la primera unidad superpuesta en el intervalo.

Comentarios

Varios intervalos de texto pueden estar activos y trabajar de forma cooperativa en la misma historia y evolucionar con la historia. Por ejemplo, si un intervalo de texto elimina el texto especificado antes de otro intervalo de texto, este último realiza un seguimiento del cambio. En este sentido, los intervalos de texto son similares a los marcadores de Microsoft Word, que también realizan un seguimiento de los cambios de edición. Sin embargo, los marcadores no pueden editar texto, mientras que los intervalos de texto pueden. Además, los intervalos permiten manipular texto sin cambiar la selección o el Portapapeles, ambos son valiosos para los usuarios finales. La interfaz ITextSelection hereda de ITextRange y agrega algunos métodos y propiedades orientados a la interfaz de usuario, como se describe en la sección sobre ITextSelection.

Puede examinar un intervalo de texto mediante métodos basados en posiciones de caracteres. En concreto, un intervalo de texto se caracteriza por:

  • Posición del primer carácter, cpFirst, que apunta en un punto de inserción inmediatamente anterior al primer carácter (relativo al principio del artículo) del intervalo.
  • Posición de límite , cpLim, que apunta a un punto de inserción inmediatamente después del último carácter del intervalo.
El primer personaje de una historia tiene cpFirst = cero. Si un argumento cp tiene un valor mayor que el número de caracteres del artículo, en su lugar se usa el número de caracteres del artículo. Si un argumento cp es negativo, se usa cero en su lugar. Para aquellos familiarizados con Microsoft Visual Basic para Aplicaciones, llame a la propiedad cpFirstStart y a la propiedad cpLimEnd (aunque la posición inicial de un intervalo también sea un final).

En la ilustración siguiente, las posiciones de caracteres se representan mediante las líneas que separan las letras. Los valores de posición de caracteres correspondientes se proporcionan debajo de las líneas. El intervalo que comienza en cpFirst = 5 y termina en cpLim = 7 contiene la palabra de dos letras. Si esta figura representa el texto completo de una historia, la longitud de la historia es de 30.

Diagrama de una cadena de texto de 30 caracteres, con dos de las cinco palabras sombreadas La longitud de un intervalo se proporciona mediantecpFirst cpFirst - o equivalentemente por End - Start. Un rango con longitud cero se denomina rango degenerado o vacío y tiene valores cp*iguales, es decir, cpFirst = cpLim. Un ejemplo de un intervalo degenerado es el punto de inserción actual. Una selección que no es null es un ejemplo de un intervalo no degenerado.

Supongamos que el intervalo comprendido entre 5 y 7 indicado por las celdas sombreadas de la ilustración anterior se le indica que elimine su texto (vea Eliminar), convirtiéndose así en un punto de inserción. El intervalo comprendido entre 25 y 29 rastrearía automáticamente su contenido, es decir, el texto de la palabra. En la figura siguiente se muestra el resultado.

Diagrama de una cadena de texto de 28 caracteres, con una de las cuatro palabras sombreadas En esta ilustración, el intervalo de texto ahora se ha ajustado automáticamente para que cpFirst = 23 y cpLim = 27. El propietario del intervalo no tiene que preocuparse por actualizar los valores de posición de los caracteres de intervalo en el rostro de la edición.

Los nombres de los métodos de movimiento indican qué fin se va a mover, pero tenga en cuenta que si algún método intenta mover un intervalo más allá del otro, ambos extremos se mueven a la posición de destino. Como resultado, el punto de inserción se encuentra en la posición de destino. El concepto es que cpFirst y cpLim siempre tienen que obedecer la condición fundamental

0 <= cpFirst<= cpLim<= # characters in story

o de forma equivalente para un intervalo r, 0 <= r. Start <= r. End <= r. StoryLength, que es lo que cabría esperar de los nombres de estas cantidades.

Otra característica importante es que todos los casos contienen un carácter CR final (0xD) indeletable al final. Así que incluso una historia vacía tiene un solo carácter, es decir, la CR final. Un intervalo puede seleccionar este carácter, pero no puede convertirse en un punto de inserción más allá de él. Para ver cómo funciona esto, intente seleccionar la CR final en un documento de Word y, a continuación, presione la tecla FLECHA DERECHA para contraerla. El árbol de directorios se contraerá antes de la CR final, pero no se puede eliminar la CR. El modelo de objetos de texto (TOM) funciona de la misma manera. Entonces, si r. Start <= r. Termine, a continuación, r. End <= (r. StoryLength – 1). Para obtener una explicación sobre cómo eliminar una CR, consulte Eliminar.

Algunos métodos dependen de un argumento Unit , que puede tomar los valores predefinidos enumerados en la tabla siguiente.

Unidad Valor Significado
tomCharacter 1 Carácter.
tomWord 2 Word.
tomSentence 3 Oración.
tomParagraph 4 Párrafo.
tomLine 5 Línea (en pantalla).
tomStory 6 Historia.
tomScreen 7 Pantalla (como para PAGE UP/PAGE DOWN).
tomSection 8 Sección.
tomColumn 9 Columna de tabla.
tomRow 10 Fila de tabla.
tomWindow 11 Superior izquierda o inferior derecha de la ventana.
tomCell 12 Celda de tabla.
tomCharFormat 13 Ejecución de formato de caracteres constantes.
tomParaFormat 14 Ejecución de formato de párrafo constante.
tomTable 15 Tabla.
tomObject 16 Objeto incrustado.
 

La mayoría de los valores unitarias son autoexplicativos. Sin embargo, se proporcionan las descripciones siguientes para mayor claridad.

tomWord

La constante tomWord es un final de párrafo o un intervalo de caracteres alfanuméricos o signos de puntuación, incluidos los espacios en blanco que siguen. Para obtener una sensación en pantalla para tomWord, watch cómo se mueve el símbolo de intercalación al presionar CTRL+FLECHA DERECHA (—>) o CTRL+FLECHA IZQUIERDA (<—) en un documento de Word.

tomSentence

La constante tomSentence describe una cadena de texto que termina con un punto, signo de interrogación o signo de exclamación y va seguido de uno o varios caracteres de espacio en blanco ASCII (de 9 a 0xd y 0x20) o del separador de párrafos Unicode (0x2029). El espacio en blanco final forma parte de la oración. La última frase de un artículo no necesita tener un punto, signo de interrogación o signo de exclamación. El inicio de una historia se califica como el inicio de una tomSentence, incluso si la cadena no se califica como una oración gramaticalmente. Otras oraciones deben seguir un final de oración y no pueden comenzar con un punto, signo de interrogación o signo de exclamación.

tomParagraph

La constante tomParagraph es una cadena de texto terminada por una marca de fin de párrafo (CRLF, CR, CR, VT (para MAYÚS+ENTRAR), LF, FF o 0x2029). Los motores TOM siempre tienen una marca de fin de párrafo indeletable al final de una historia. Por lo tanto, todas las historias de TOM tienen automáticamente al menos un tomWord, un tomSentence y un tomParagraph.

tomLine

La constante tomLine corresponde a una línea de texto en una pantalla, siempre que una pantalla esté asociada al intervalo. Si no hay ninguna pantalla asociada a un rango, tomLine se trata como tomParagraph. Una selección tiene automáticamente una pantalla y un intervalo que es un duplicado (consulte GetDuplicate). Es posible que otros rangos no tengan una pantalla, según el motor y el contexto de TOM.

Los métodos que mueven uno o ambos finalizan en términos de Unidad, como Move, MoveEnd y MoveStart, dependen del argumento Count firmado. Excepto para los comandos de movimiento geométrico ITextSelection , si Count es mayor que cero, los extremos que se van a mover se mueven hacia delante (hacia el final del artículo), y si Count es menor que cero, los extremos se mueven hacia atrás (hacia el principio). El valor predeterminado de Count para estos métodos Move es 1. Estos métodos intentan mover unidades de recuento, pero el movimiento nunca está más allá de los extremos de la historia.

Los métodos que mueven uno o ambos extremos haciendo coincidir cadenas de caracteres o patrones de cadena, como MoveWhile, MoveEndWhile y MoveStartWhile, pueden subir hasta un número máximo de caracteres dados por el argumento Count firmado. Si Count es mayor que cero, los extremos que se van a mover se mueven hacia delante y si Count es menor que cero, los extremos se mueven hacia atrás. Se definen dos valores especiales count , tomForward y tomBackward. Estos valores se garantizan para llegar al final y el inicio del artículo, respectivamente. El valor predeterminado de Count es tomForward.

En los métodos Move* que convierten un intervalo no degenerado en uno degenerado, como Move, MoveWhile y MoveUntil, cpFirst se cambia si Count es negativo y cpLim se cambia si Count es positivo. Después de este movimiento, el otro extremo del intervalo también se mueve a la nueva ubicación. Consulte los métodos individuales para obtener información de recuento más específica. Para los intervalos no degenerados, los métodos MoveStart, MoveEnd,MoveStartWhile, MoveEndWhile, MoveStartUntil y MoveEndUntil mueven la posición inicial (Inicio) o la posición final (End).

Para seleccionar una unidad que corresponda a un intervalo contiguo, como tomWord, tomSentence y tomParagraph, use el método MoveEnd . Para seleccionar una unidad que corresponda a un intervalo no contiguo, como tomObject, use el método EndOf , ya que el siguiente objeto puede producirse después de texto intermedio sustancial, si está en absoluto. Para seleccionar una unidad tomCell, el intervalo debe estar dentro de una tabla.

A continuación se muestran ejemplos y explicaciones adicionales de los argumentos Count y Unit . Tenga en cuenta que es posible que los motores TOM no admitan todas las unidades de la tabla anterior. Por ejemplo, los controles de edición enriquecidos no ofrecen los conceptos de las secciones, sino que devuelven E_NOTIMPL cuando se proporciona tomSection. Sin embargo, si un motor de TOM admite una unidad, tiene el valor de índice especificado en la tabla.

Normalmente, las aplicaciones no implementan la interfaz ITextRange . Las soluciones de texto de Microsoft, como los controles de edición enriquecidos, implementan ITextRange como parte de su implementación de TOM.

Las aplicaciones pueden recuperar un puntero ITextRange llamando al método Range .

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado tom.h

Consulte también

Conceptual

IDispatch

Modelo de objetos de texto

Uso del modelo de objetos de texto