TEXTO COLORIDO NO RICHTEXTBOX

DANLEONHART 20/12/2011 17:08:53
#391706
Pessoal...

Como faço para inserir parte de texto colorido no RichTextBox ???

Bem, o sistema vai ser assim:

Tenho duas TextBoxes que enviarão textos para a RichTextBox... sendo que o texto que partir da txt1 deve ser apresentado no RTB na cor azul...e o que partir da txt2 tem de ser apresentado na cor vermelho...

Comecei com algumas tentativas a partir de dicas que encontrei na NET...mas não tá dando certo...pois sempre a cor que permanece é a cor que foi colocada em primeiro na RTB.

script:

Dim T_atual As Integer, Tam As Integer, Inicio As Integer
Dim Todo_Texto As String
T_atual = Len(Rtb1.Text)
Todo_Texto = Rtb1.Text
Tex = txtCli.Text

Tam = Len(Tex)

With Rtb1
.Text = .Text & Tex

.SelStart = T_atual
.SelLength = Tam
.SelColor = RGB(255, 0, 0)
.SelBold = True
.Text = .Text & vbNewLine

End With

ASHKATCHUP 20/12/2011 17:33:06
#391710
Resposta escolhida
Teu código ta errado, manolo...

  
T_atual = Len(Rtb1.Text)


Isso vai dar o tamanho do texto. Entao, nao muda cor pq tu nao ta selecionando nada...

Tenta assim:


T_atual = 1


E posta o resultado ai
DANLEONHART 20/12/2011 17:59:14
#391712
Tens certeza ???
porque [txt-color=#0000f0]T_atual[/txt-color] aloca o tamanho do texto contido na RTB, fazendo com que inicie a seleção (SelStart) sempre após o que já esta digitado dentro da RTB...fazendo assim as alterações solicitadas...
ASHKATCHUP 20/12/2011 18:02:29
#391713
Se não me engano, no RichTextBox tu tem que SELECIONAR primeiro e depois mudar a cor.

Ou seja, sempre selecionar o que tem ANTES << e ai mudar a cor.

Mas tenta ai...
ASHKATCHUP 20/12/2011 18:04:31
#391714
Ou posta o teu projeto ai para que a gente possa te ajudar olhando o teu caso, o teu código e atua tela!!!
DANLEONHART 21/12/2011 07:17:48
#391742
Bem...

Se puderem me dizer como [txt-color=#0000f0]manter[/txt-color] a formatação exata (cor, fonte e etc...) do texto que está na RTB antes de receber o novo texto, já ajuda muito

pois quero mudar somente a cor do texto que está sendo adicionado ao RTB...o que já está tem de ficar sem alterações...
ao incluir eu faço:

Rtb1.Text = Rtb1.Text & NovoTexto


Onde NovoTexto é a variável que contém o texto que pretendo adicionar ao que já está na RTB...porém se configuro para mudar a cor apenas do texto que está entrando, o sistema muda todo RTB...

Estou tentando assim:

Dim Tam_Ini As Integer, TamTexto As Integer
Dim NovoTexto As String

Tam_Ini = Len(Rtb1.Text) [ô] Aqui pego quantas letras tem o RTB antes de receber o NovoTexto

NovoTexto = InputBox([Ô]Escreva o Texto que deseja adicionar:[Ô], [Ô]Texto a adicionar:[Ô])

TamTexto = Len(Texto) [ô] Aqui pego a quantidade de letras que tem o NovoTexto

With Rtb1

.Text = .Text & NovoTexto & vbNewLine [ô] Aqui adiciono o NovoTexto ao RTB
.SelStart = Tam_Ini [ô] Aponto que a partir do NovoTexto é que deve-se fazer as alterações
.SelLength = TamTexto [ô] Informo o tamanho do texto que deve sofrer as alterações

.SelColor = Cor [ô] Informo a cor que deve ser (está em uma variável)
.SelBold = True [ô] Ativo o efeito Bolt no texto

End With



Onde estou errando ???
ASHKATCHUP 21/12/2011 15:19:25
#391780
Manolo, por algum motivo, quando se adiciona via código algum texto no RTBOX, ele perde a formatação.

Não sei pq, mas ta acontecendo aqui.

Sugestões:
->guardar posições que tem que ter cor diferente e colorir todas sempre que um texto for adicionado
->enviar o texto para o RTB via [Ô]SENDKEYS[Ô], ja que isso não tira a formatação
->procurar uma solução na net, pois não vejo outra
ASHKATCHUP 21/12/2011 15:22:07
#391781
Com o SENDKEYS funcionou



Private Sub btnInserir_Click()
Dim iTamanhoAnterior As Integer
Dim iTamanhoNovoTexto As Integer
Dim iTamanhoFinal As Integer
Dim sTextoFormatado As String
[ô]
iTamanhoNovoTexto = Len(txtFrase.Text)
[ô]
If iTamanhoNovoTexto > 0 Then
[ô]
iTamanhoAnterior = Len(rtbTexto.Text)
[ô]
rtbTexto.SetFocus
SendKeys txtFrase.Text, 1000
[ô]
iTamanhoFinal = Len(rtbTexto.Text)
[ô]
rtbTexto.SelStart = iTamanhoAnterior + 1
rtbTexto.SelLength = iTamanhoNovoTexto
[ô]
rtbTexto.SelColor = vbRed
[ô]
End If
[ô]
If Len(rtbTexto.Text) > 0 Then
rtbTexto.SelStart = Len(rtbTexto.Text) - 1
Else
rtbTexto.SelStart = 0
End If
[ô]
rtbTexto.SelLength = 1
rtbTexto.SelColor = vbBlack
[ô]
rtbTexto.SelStart = Len(rtbTexto.Text)
rtbTexto.SelLength = 0
[ô]
End Sub

DANLEONHART 21/12/2011 17:47:23
#391800
ASHKATCHUP
Cara, eu não sabia que o SendKeys era usado dessa forma também
geralmente só uso quando quero simular uma tecla...
Obrigado cara ! ta funcionando aqui também
Tópico encerrado , respostas não são mais permitidas