• 0
Sign in to follow this  
Sociodagol

Alterar Cores De " Tags" Num Textbox

Question

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.

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this