Compartir a través de


Método ITextRange::SetChar (tom.h)

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

Sintaxis

HRESULT SetChar(
  long Char
);

Parámetros

Char

Tipo: long

Nuevo valor para el carácter en la posición inicial.

Valor devuelto

Tipo: HRESULT

El método devuelve un valor HRESULT . Si el método se realiza correctamente, devuelve S_OK. Si se produce un error en el método, devuelve uno de los siguientes códigos de error. Para obtener más información sobre los códigos de error COM, vea Control de errores en COM.

Código devuelto Descripción
E_ACCESSDENIED
El texto está protegido por escritura.
E_OUTOFMEMORY
Memoria insuficiente

Comentarios

ITextRange::SetChar permite especificar el código de carácter preciso que se va a usar. Sin embargo, los literales de cadena con glifos similares pueden ser engañosos.

Los caracteres establecidos por este método son LONG en lugar de BSTR. Esto oculta la forma en que se almacenan en la memoria auxiliar (como bytes, palabras, longitud variable, etc.).

Con frecuencia en sistemas que no tienen ajuste automático de palabras, los documentos tienen retornos de carro duro insertados solo para saltos de línea. El código siguiente muestra una manera sencilla, pero no perfecta, de convertir este carro duro vuelve a espacios en blanco para el artículo asociado al rango r.

    Sub EnableWrap(r As ITextRange)   // Convert false hard CRs to soft
        r.SetRange 0, 0               // r is set at start of story
        While r.Move(tomParagraph)    // Go to start of next paragraph
            If r.MoveWhile(C1_WHITE, 1) = 0 Then    // Next char isn't white space
                r.Move tomCharacter, -1
                r.SetChar = Asc(" ")    // Replace CR by blank
            End If
        Wend        // Loop till no more CRs in story
    End Sub

Como alternativa, puede usar lo siguiente dentro del bucle IF.

r.MoveStart tomCharacter, -1        // Select previous char (the CR)
r = " "        // Replace it with a blank

Este enfoque permite ajustar el texto a otros anchos. Sin embargo, el algoritmo no es perfecto: supone que un retorno de carro duro seguido de un espacio en blanco (espacio en blanco, tabulación, avance de línea, retorno de carro, etc.) debe reemplazarse por un espacio en blanco. El algoritmo también supone que el carácter de retorno de carro es un solo carácter como retorno de carro o el carácter de fin de párrafo (EOP) Unicode 0x2029. Además, la combinación de retorno de carro y avance de línea no coincide y requeriría escribir y ejecutar más código (o usar FindText(^p)). Otra precaución es que hay otros casos, como código mixto y documentación, donde el algoritmo no funciona correctamente.

Sin embargo, ITextRange::SetChar es más eficaz que una operación de reemplazo que se realiza mediante una eliminación seguida de una inserción. Por lo tanto, volver a escribir el código sin usar ITextRange::SetChar probablemente sería mucho más lento.

La propiedad Char , que puede hacer la mayoría de las cosas que una colección de caracteres puede, tiene dos grandes ventajas: puede hacer referencia a cualquier carácter del artículo primario en lugar de limitarse al intervalo primario, y es significativamente más rápido, ya que LONGen lugar de objetos de rango están implicados. Debido a estas ventajas, el Modelo de objetos de texto (TOM) no admite una colección de caracteres.

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
Archivo DLL Msftedit.dll

Consulte también

Conceptual

ITextRange

Referencia

Modelo de objetos de texto