Método ITextRange::SetChar (tom.h)
Define o caractere na posição inicial do intervalo.
Sintaxe
HRESULT SetChar(
long Char
);
Parâmetros
Char
Tipo: long
Novo valor para caractere na posição inicial.
Retornar valor
Tipo: HRESULT
O método retorna um valor HRESULT . Se o método for bem-sucedido, ele retornará S_OK. Se o método falhar, ele retornará um dos seguintes códigos de erro. Para obter mais informações sobre códigos de erro COM, consulte Tratamento de erros em COM.
Código de retorno | Descrição |
---|---|
|
O texto é protegido por gravação. |
|
Sem memória. |
Comentários
ITextRange::SetChar permite que você especifique o código de caractere preciso a ser usado. No entanto, literais de cadeia de caracteres com glifos semelhantes podem ser enganosos.
Os caracteres definidos por esse método são LONG em vez de um BSTR. Isso oculta a maneira como eles são armazenados no repositório de backup (como bytes, palavras, comprimento variável e assim por diante).
Frequentemente em sistemas que não têm disposição automática de palavras, os documentos têm retornos de carro rígido inseridos apenas para quebras de linha. O código a seguir mostra uma maneira simples, mas não perfeita, de converter esse carro rígido retorna para espaços em branco para a história associada ao intervalo 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, você pode usar o seguinte dentro do loop IF.
r.MoveStart tomCharacter, -1 // Select previous char (the CR)
r = " " // Replace it with a blank
Essa abordagem permite encapsular o texto em outras larguras. No entanto, o algoritmo não é perfeito: ele pressupõe que um retorno de carro rígido seguido por qualquer outra coisa que não seja espaço em branco (em branco, guia, alimentação de linha, retorno de carro e assim por diante) deve ser substituído por um espaço em branco. O algoritmo também pressupõe que o caractere de retorno de carro seja um único caractere, como o retorno de carro ou o caractere de 0x2029 de fim de parágrafo Unicode (EOP). E a combinação de retorno de carro e alimentação de linha não corresponde e exigiria escrever e executar mais código (ou usar FindText(^p)
). Outro cuidado é que há outros casos, como código misto e documentação, em que o algoritmo não funciona corretamente.
No entanto, ITextRange::SetChar é mais eficiente do que uma operação de substituição realizada por uma exclusão seguida por uma inserção. Portanto, reescrever o código sem usar ITextRange::SetChar provavelmente seria muito mais lento.
A propriedade Char , que pode fazer a maioria das coisas que uma coleção de caracteres pode, tem duas grandes vantagens: ela pode referenciar qualquer personagem na história pai em vez de ser limitada ao intervalo pai, e é significativamente mais rápida, já que objetos LONGem vez de intervalo estão envolvidos. Devido a essas vantagens, o TOM (Modelo de Objeto de Texto) não dá suporte a uma coleção de caracteres.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | tom.h |
DLL | Msftedit.dll |
Confira também
Conceitual
Referência