Jump to content
Muryllo

[Resolvido] Textbox com palavras coloridas

Recommended Posts

Muryllo

Boas pessoal, estou a desenvolver um projeto de uma linguagem de programação básica com a sintaxe do C++ e gostaria de saber como fazer a textbox ter palavras coloridas igual ao das IDEs do Visual Basic, C# etc ... Eu gostaria que ficasse igual ao print abaixo :

FOCkv7f.png

A linguagem é bem básica é pra um piano virtual que estou criando. já sei como ler os dados da minha linguagem e executá-los de forma correta. na verdade essa está sendo a parte mais fácil. A questão é só essa da IDE mesmo. Obrigado desde já. :)

Share this post


Link to post
Share on other sites
apocsantos

Boa noite,

Já tive de fazer algo parecido, para aplicar sintax highlight numa rich text box. A solução que acabei utilizando passou por ler cada palavra de cada linha, comparar com as palavras que eram para colorir, e caso houvesse um "match", a propriedade color da palavra na rich text box era alterada.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
Muryllo

Boa Noite Apocsantos,

Estive pesquisando sobre essa forma, parece que também há como definir um estilo de fonte que consegue fazer isso também, como eu não sei, mas a parte de ler cada palavra parece ser interessante. Se não for pedir muito, você teria algum exemplo ?

Muito obrigado, abraços.

Share this post


Link to post
Share on other sites
thoga31

Aqui torna-se importante definir a linguagem a um nível técnico. Neste caso, refiro-me a definir os tokens da linguagem - palavras reservadas, constantes, símbolos e operadores, comentários e separadores (isto de um modo geral). À medida que percorres o texto, deves ter a noção de quando está a acabar um token e a começar outro. Isto vai-te permitir distinguir o que estás a analisar.

Para formatar o texto, deverás procurar, nomeadamente, pelos seguintes métodos e propriedades da RichTextBox: Select, Selection, SelectionColor e SelectionFont. ;)

Edited by thoga31
  • Vote 1

Knowledge is free!

Share this post


Link to post
Share on other sites
Muryllo

Boa Noite thoga31,

Muito obrigado, isso me ajuda muito ! Sobre a questão dos tokens, realmente isso dá um trabalho e é preciso fazer com calma. Como a linguagem é simples e para nível acadêmico acredito que posso dar conta rs. Obrigado mais uma vez thoga31 e Apocsantos.

Edited by Muryllo

Share this post


Link to post
Share on other sites
apocsantos

Boa noite,

Já estava meio "zombie", mas ainda passei por cá!

Uma pesquisa rápida e encontrei uma implementação em C#, já com a questão dos tokens implementada.

http://www.c-sharpcorner.com/UploadFile/duncanharris/SyntaxHighlightInRichTextBoxP112012005050840AM/SyntaxHighlightInRichTextBoxP1.aspx

Uma coisa que creio que dê jeito será a numeração das linhas de código. Neste momento já estou a usar o tablet, se estivesse no PC, ainda te arranjava código para fazer isso, em vb.net (já implementei numeração de linhas em richtextboxes em vb.net, mas tenho o código no hdd do pc).

Cordiais cumprimentos,

Apocsantos

  • Vote 1

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
Muryllo

Boas Apocsantos,

Ainda hoje estava pesquisando sobre isso, também pensei em enumerar as linhas de código. A linguagem como é bem básica parece mais um script. Eu crio um programa runner que lê o código em um arquivo e interpreta fazendo o desejado. Isso é feito usando um pouco de Stream Reader, chars, ciclos for e etc ... Agora esta parte da cor na linguagem eu achei que fosse funcionar utilizando os eventos KeyDown e KeyPress do RichTextBox. Eu pegava cada char que era digitada e ia montando numa variável, até meterem a barra de espaço a partir daí ele reconhecia que a string anterior era uma palavra e então fazia uma comparação para usar a cor, no entanto não queria utilizar o método select pois isso traz alguns bugs ao programa e um tipo de problema ao usuário que seria sobrescrever a string selecionada. Eu estava fuçando um código do José Carlos Macoratti para ver se isto me ajudava, no entanto ele utiliza uma classe externa ao vb.net e eu não sei mexer com ela. É a classe clsColorRichtextBox.

Obrigado, abraços.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.