Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cambalinho

[VB6] - como posso alterar as cores das palavras?

Recommended Posts

Private Sub rtbTextCode_Change()
    
    Dim strLine As String
    Dim wrdWord() As Word
    
    If Len(rtbTextCode.Text) = 0 Then Exit Sub
    strLine = GetTextLine(rtbTextCode.Text, CLng(RowCount))
    If Len(strLine) = 0 Or rtbTextCode.SelStart = 0 Then Exit Sub
    strLine = GetLastWord(strLine)
    
        If IsKeyWord(strLine) = True Then
            
            rtbTextCode.SelStart = rtbTextCode.SelStart - Len(strLine)
            rtbTextCode.SelLength = Len(strLine)
            rtbTextCode.SelColor = vbBlue
            rtbTextCode.SelLength = 0
            rtbTextCode.SelStart = rtbTextCode.SelStart + Len(strLine) + 1
            rtbTextCode.SelColor = vbBlack
        ElseIf IsString(strLine) = True Then
            rtbTextCode.SelStart = rtbTextCode.SelStart - Len(strLine)
            rtbTextCode.SelLength = Len(strLine)
            rtbTextCode.SelColor = vbRed
            rtbTextCode.SelLength = 0
            rtbTextCode.SelStart = rtbTextCode.SelStart + Len(strLine)
        Else
            'do nothing
            rtbTextCode.SelColor = vbGreen
        End If
    
End Sub

o meu problema nao esta na IsKeyWord(strLine), porque recebo as palavras(a nao ser que tambem receba os espaços). alguem me pode explicar como posso resolver correctamente a sintax de cor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas Amigos

 

Você está setando a cor do TXT não da texto inserido, começa por ai.

 

tenta usar a propriedade Font.color = O que você quer

 

 

exemplo quando uso no Excel: .Selection.Font.Color= vbGreen

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas Amigos

 

Você está setando a cor do TXT não da texto inserido, começa por ai.

 

tenta usar a propriedade Font.color = O que você quer

 

 

exemplo quando uso no Excel: .Selection.Font.Color= vbGreen

como ves, estou a tentar fazer isso, mas ás vezes é ignorado ou da-me resultados imprevistos:(

por isso queria algumas dicas;)

obrigado

 

bruno_mosciatti: eu nao percebo do que falas... só me registei á poucos dias(talvez 1 semana) e só tenho 2 topicos diferentes;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está pegando o código por linha? Basta você usar o método do textbox para a seleção, [inline]Rtf.SelectedText.Color[/inline]

sim por linha, mas dependendo do tipo de palavras é que altero para as cores adcuadas. mas nem sempre tenho resultados correctos:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim?

imagina 1 linguagem:

- as strings tem 1 cor;

- as keywords tem outra cor;

- os comentarios tem outras cores;

.....

mas aqueles if's estao-me a falhar:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas chega a cais no primeiro if? Porque se ele cair no primeiro ele não vai cair nos demais.

fiz doutra forma e ficou melhor;)

1 - verifico se o keycode é igual a aspas(utilizo os numeros da tabela ascii);

2 - se for aspas, entao utilizo 1 variavel a dizer que estou dentro da string;

3 - se inserir outra aspas digo que nao estou dentro da string;

4 - ao clicar noutro caracter ja fica para preto;)

a minha idea nao esta a 100%, mas ja funciona melhor;)

 

com esta experiencia e dor de cabeça:)

fiquei com 1 pequena duvida: quando clicamos num caracter(teclado) o evento Change é chamado antes ou depois de inserir o caracter?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai depende, se o evento for o textChanged então ele só vai ativar o evento depois de realizar a inserção do caractere, caso contrário você vai ter que especificar qual evento Change você está falando, porque existem vários controles do VB que usam este evento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai depende, se o evento for o textChanged então ele só vai ativar o evento depois de realizar a inserção do caractere, caso contrário você vai ter que especificar qual evento Change você está falando, porque existem vários controles do VB que usam este evento.

refiro-me ao change do richtextbox?

e ja agora: o que é o event selchange(tambem do richtextbox)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.