Ir para conteúdo
Fórum Script Brasil
  • 0

Alterar Cores De " Tags" Num Textbox


Sociodagol

Pergunta

Pessoal já li alguns tópicos aqui a respeito de editores html, entretanto os códigos mencionados não foram bem compreendidos por este novato em VB rs, testei eles no VB6 o qual uso e percebi que eram para o .net acabou que dando erro na maioria dos codes.

Bom eu criei 3 textbox sendo que todos tem a capacidade de abrir e salvar arquivos com extensões PHP, CSS, TPL entre outras, eles estão rodando perfeitamente.

Eis que surgiu a duvida e a necessidade d colorir algumas tags e ate o momento não consegui pensar numa forma lógica de resolver isso.

Gostaria de configurar um dos textbox, para que ao ler um determinado documento ou digitar se for o caso algumas tags como por exemplo <html> que ele alterasse a cor padrão "preto" para outra cor ex. azul, como ocorre em editores como dreamweaver por exemplo.

Não faço a minima idéia por onde começar, já esboçei algumas coisas no change do text mas até o momento sem sucesso, podem me dar uma luz, um exmplo ou alguma recomendação de leitura para desenvolver meu editor?

Desde já quero agradecer aos moderadores como o Graymalkin, e William Rodrigues há 2 semanas iniciei no VB, e tenho lido varios posts aqui pra desenvolver meu projeto e ainda não sendo registrado já percebi a boa vontade que toda a staff tem com os usuário, parabens a todos pelo trabalho.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

No caso, não vai ter como você usar uma textbox comum, já que ela só permite *uma* cor para *todo* o texto. Você vai precisar usar uma RichTextBox, e é bem provável que os tópicos que você encontrou (mesmo os que falam sobre VB.NET) devam ser referir a este controle e ao código RTF (RichText Format), que é o utilizado para a formatação de um arquivo RTF.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Graymalkin

Obrigado pela atenção, então iniciei meu projeto com RTB mas esbarrei na questão das linhas, ele quebrava as linhas que originalmente eram mais extensas, os código fontes de algumas paginas php por exemplo tinham uma linha unica e ao ser carregados no RTF quebravam como se tivesse configurado uma margem menor que a linha.

To estudando aqui o Codebox se não em engano indicado por você em alguns tópicos, ele até tem algo que preciso em meu projeto que é o contador/ mostrador de linhas automatico, fiz ele rodar aqui, mas tem uma infinidade de coisas inclusive uma dll que tive que instalar pra funcionar, e apesar de novato em VB gostaria de entender aquilo que estou desenvolvendo, não queria simplismente copiar do cara que fez, entretando pelo que testei ele apenas colore o que esta entre <> para azul, não definido uma série de vriaveis e etc... que são importantes

Se você puder dar um exemplo de como configurar no RTF duas ou mais cores eu te agradeço, acredito que seja mais facil entender e derepente implantar no RTF ou até mesmo no Codebox, pois ele também chama o RTF no código.

Se tivesse como montar um exemplo simulando que as fontes de todas tag´s <html> e </html> ficassem azuis e todas tag´s <table> </table> ficassem vermelha por exemplo já me ajudaria a contruir o restante.

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

pra não ter esse problema da quebra de linha configure a propriedade RightMargin pra um tamanho grande.

essa propriedade guarda o tamanho em pixels que você quer que a linha tenha ate que ela quebre

pra ver como mudar a cor, dexando cada pedaco do texto com uma cor diferente, veja aqui:

http://scriptbrasil.com.br/forum/index.php?showtopic=71787

quanto ao codebox não conheco, então não posso ajudar

Link para o comentário
Compartilhar em outros sites

  • 0

kuroi, agradeço a questão da margem, já consegui configurar para um valor necessário para não desfigurar as linhas,

Quanto a troca das cores infelizmente não consegui sucesso, em seu link pelo que entendi ele troca as cores de acordo com um determinado numero de caracteres em sequencia, no meu caso eu preciso que ele analise qual as tags para depois trocar as cores.

Graymalkin, devia ter citado no inicio de meu post esse tópico, estudei durante um bom tempo ele, tanto o code do §uiciDa£ o qual tentei adaptar sem sucesso [ELE USA O VB.NET ] Como o seu code [Não entendi muito bem na verdade]

No caso do code do §uiciDa£ como disse eu ate tentei adaptar pro vb6.0 mas por exemplo onde é mencionado:

Private Sub RTB_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RTB.TextChanged

No vb 6.0 da erro pois não aceita (ByVal sender As System.Object, ByVal e As System.EventArgs)

assim como as declarações RTB.SelectionFont = New Font(RTB.SelectionFont, FontStyle.Bold)

O maximo que consegui fazer, foi gerar um FIND, dessa forma

Private Sub RichTextBox1_Change()

RichTextBox1.Find ("<html>")

RichTextBox1.SelColor = vbRed

End Sub

mas quando digito a tag <html> ele encontra o texto, mas permanece o foco na tag e se eu continuo digitando acabo perdendo a tag porque ele subscreve.

Tentei ainda algumas combinações com if mas sem sucesso até o momento uma delas foi essa

Private Sub RichTextBox2_Change()

texto = RichTextBox2.SelColor = vbBlue

If RichTextBox2.Find("<html>") Then

texto = RichTextBox2.Text

End If

End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

Private Sub RTB_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RTB.TextChanged

No vb 6.0 da erro pois não aceita (ByVal sender As System.Object, ByVal e As System.EventArgs)

Mas, cara, isso daí é a declaração do evento... você não precisa copiar isso, só o código do meio que importa. No caso, "Private Sub RTB_TextChanged(...)" é o mesmo que o seu "Private Sub RichTextBox1_Change()", que aliás, o VB já coloca *automaticamente* para você.

assim como as declarações RTB.SelectionFont = New Font(RTB.SelectionFont, FontStyle.Bold)

Aí é só uma questão de adaptar. O que o código acima faz é definir a fonte da seleção (como negrito). Você vai ter o mesmo efeito fazendo (no VB6):

RichTextBox1.SelBold = True

Sendo que o que eu disse foi para você analisar a ***formatação*** RTF e *não* converter aquele código.

O maximo que consegui fazer, foi gerar um FIND, dessa forma

Private Sub RichTextBox1_Change()

RichTextBox1.Find ("<html>")

RichTextBox1.SelColor = vbRed

End Sub

mas quando digito a tag <html> ele encontra o texto, mas permanece o foco na tag e se eu continuo digitando acabo perdendo a tag porque ele subscreve.

Tentei ainda algumas combinações com if mas sem sucesso até o momento uma delas foi essa

Private Sub RichTextBox2_Change()

texto = RichTextBox2.SelColor = vbBlue

If RichTextBox2.Find("<html>") Then

texto = RichTextBox2.Text

End If

End Sub

Sim, porque essa não é a melhor maneira de se fazer isso. O recomendável é usar a formatação RTF, que é o foco daquele código no tópico citado.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Irei procurar algo, porque no tópico em questão de fato não consigo entender a lógica.

Mas, cara, isso daí é a declaração do evento... você não precisa copiar isso, só o código do meio que importa. No caso, "Private Sub RTB_TextChanged(...)" é o mesmo que o seu "Private Sub RichTextBox1_Change()", que aliás, o VB já coloca *automaticamente* para você.

Pois é, como mensurado no exemplo que dei no ultimo post isso ai eu já havia feito.

Aí é só uma questão de adaptar. O que o código acima faz é definir a fonte da seleção (como negrito). Você vai ter o mesmo efeito fazendo (no VB6):

É aquele negócio, quando eu entender a lógica de fazer o Richtextbox ler uma tag e personaliza-la, o conceito de formatação será certamente mais simples.

Sim, porque essa não é a melhor maneira de se fazer isso. O recomendável é usar a formatação RTF, que é o foco daquele código no tópico citado.

Irei reestudar e procurar mais a respeito pra ver se consigo um exemplo, porque minha dificuldade não esta em simplesmente formatar um texto, e sim identificar uma tag e ai sim formata-la, de qualquer forma agradeço a atenção.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...