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 |
---|---|
|
El texto está protegido por escritura. |
|
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
Referencia