Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de
Autor
|
Tema: Ayuda con colores RichTextBox (Leído 5,344 veces)
|
raul338
Conectado
Mensajes: 2.373
La sonrisa es la mejor forma de afrontar las cosas
|
jajajaj no seas vago y usa un for each o algo para recorrer un bucle xD mira, te escribo el codigo a la volada Dim palabras as New HashTable() Public Sub Form_Load(....).... palabras.add("@", Color.Red) palabras.add("echo", Color.Blue) End Sub '..... Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged For each s As String In palabras.Keys colorear(s, palabras(s)) Next End sub no estoy seguro si funciona (dudo dentro del for each), pero bueno, lo acabo de inventar recien, fijate si te sirve
|
|
|
|
|
En línea
|
|
|
|
Braayhaan
Desconectado
Mensajes: 224
|
mmm no me funka Raul, bueno de todas formas voy a seguir chequeando por mi cuenta creo que ya los moleste bastante  . Posdata: Felicitaciones es tu mensaje 100! 
|
|
|
|
|
En línea
|
|
|
|
|
Xtriker
|
Es curioso como se comporta el RichTextBox con el codigo que utilizé, por que al editar una parte intermedia del texto me selecciona hacia adelante algunos espacios, jeje, y a mi si me funciona en todas las lineas  , realmente al leer el post por primera vez crei que seria mas simple, unas 4 lineas y ya, pero resulto interesante intentar, en fin, bueno aqui hay otra idea, aunque tambien tiene varios fallos Private ReservadasBlue As String() = _ {"if", "then", "else"} 'En este arreglo pones todas las palabras que quieras que aparezcan en color Azul Private ReservadasRed As String() = _ {"echo", "@"} 'En este arreglo pones todas las palabras que quieras que aparezcan en color Rojo Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged ' aqui obtiene un arreglo de palabras desde el inicio ' hasta donde esta la posicion del cursor Dim Palabras As String() = RichTextBox1.Text.Substring(0, RichTextBox1.SelectionStart).Split() 'Aqui obtenemos el ultimo elemento del arreglo de palabras Dim UltimaEscrita As String = Palabras(Palabras.Length - 1) 'Guardamos la posicion del cursor Dim PosCursor As Integer = RichTextBox1.SelectionStart 'Verificamos si la palabra escrita esta en el el arreglo 'en este caso declare un arreglo para cada color If ReservadasBlue.Contains(UltimaEscrita) Then RichTextBox1.Find(UltimaEscrita, RichTextBoxFinds.Reverse) RichTextBox1.SelectionColor = Color.Blue RichTextBox1.SelectionStart = PosCursor End If 'aqui para el color rojo, en caso de añadir mas pues solo seria 'cosa de agregar mas arreglos y mas condicionales If ReservadasRed.Contains(UltimaEscrita) Then RichTextBox1.Find(UltimaEscrita, RichTextBoxFinds.Reverse) RichTextBox1.SelectionColor = Color.Red RichTextBox1.SelectionStart = PosCursor End If 'regresamos al color original RichTextBox1.SelectionColor = Color.Black End Sub El codigo de Raul funciona muy bien, note que parpadea la linea al escribir, y al escribir entre texto no colorea, pero al parecer no nos da los mismos resultados el codigo, sera por aquello de los framework? bueno quien sabe.
|
|
|
|
|
En línea
|
|
|
|
Braayhaan
Desconectado
Mensajes: 224
|
LISTOO sin mas problemas Xtriker ya funciona correctamente, gracias a todos por sus respuestas!!! Saludos, a ambos los pondre en los Creditos 
|
|
|
|
|
En línea
|
|
|
|
raul338
Conectado
Mensajes: 2.373
La sonrisa es la mejor forma de afrontar las cosas
|
Posdata: Felicitaciones es tu mensaje 100! jajaja xD...sigamos x los mil!!! xD Es curioso como se comporta el RichTextBox con el codigo que utilizé, por que al editar una parte intermedia del texto me selecciona hacia adelante algunos espacios, jeje, y a mi si me funciona en todas las lineas  , realmente al leer el post por primera vez crei que seria mas simple, unas 4 lineas y ya, pero resulto interesante intentar, en fin, bueno aqui hay otra idea, aunque tambien tiene varios fallos ------------------------------- El codigo de Raul funciona muy bien, note que parpadea la linea al escribir, y al escribir entre texto no colorea, pero al parecer no nos da los mismos resultados el codigo, sera por aquello de los framework? bueno quien sabe. no he probado el codigo todavia, aunque ahora no tengo tiempo ,a al tarde volvere  es verdad, parpadea, pero es por la forma que estamos utilzando (jamas pense q habia que seleccionar para colorear). Aunque la mejor forma (y mas dificil  ) de hacerlo es haciendo un control nuevo (tal vez que herede de richtextbox) y dibujar linea por linea con colores y todo ( sobrecargando el metodo OnPaint ). Pero como dije, es la forma mas dificil de hacer: dibujar lineas, dibujar el cursor, las barras de desplazamiento, un lio... xD Edit: Funciona, aunque no he probado romperlo todavia  igual de todas formas, si dices que tiene errores, habra que perfeccionarlos y tal vez hacer una mezcla de codigo entre los 2 jejeje ... bueno.....suerte entonces... 
|
|
|
|
« Última modificación: 4 Septiembre 2009, 18:58 por raul338 »
|
En línea
|
|
|
|
raul338
Conectado
Mensajes: 2.373
La sonrisa es la mejor forma de afrontar las cosas
|
jajajaj no seas vago y usa un for each o algo para recorrer un bucle xD mira, te escribo el codigo a la volada Dim palabras as New HashTable() Public Sub Form_Load(....).... palabras.add("@", Color.Red) palabras.add("echo", Color.Blue) End Sub '..... Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged For each s As String In palabras.Keys colorear(s, palabras(s)) Next End sub no estoy seguro si funciona (dudo dentro del for each), pero bueno, lo acabo de inventar recien, fijate si te sirve Ahora (que no me acuerdo porque no lo escribi  ) estaria bueno hacer una especie de IDE simple para varios lenguajes, ej, cuantas veces hemos abierto el tremendo pero algo lento visual studio para probar unas simples lineas. Con "nuestro" pequeño IDE se podria hacer simple jejeje....x eso implemente la opcion de cualquier color. Es buena idea, alguien se prende??? (se une?)
|
|
|
|
|
En línea
|
|
|
|
|
|
|
seba123neo
|
jajajaj no seas vago y usa un for each o algo para recorrer un bucle xD mira, te escribo el codigo a la volada Dim palabras as New HashTable() Public Sub Form_Load(....).... palabras.add("@", Color.Red) palabras.add("echo", Color.Blue) End Sub '..... Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged For each s As String In palabras.Keys colorear(s, palabras(s)) Next End sub no estoy seguro si funciona (dudo dentro del for each), pero bueno, lo acabo de inventar recien, fijate si te sirve Ahora (que no me acuerdo porque no lo escribi  ) estaria bueno hacer una especie de IDE simple para varios lenguajes, ej, cuantas veces hemos abierto el tremendo pero algo lento visual studio para probar unas simples lineas. Con "nuestro" pequeño IDE se podria hacer simple jejeje....x eso implemente la opcion de cualquier color. Es buena idea, alguien se prende??? (se une?) queres hacer un parser de los colores de cada lenguaje, hay un monton de ejemplos en internet de ese tipo de proyecto.
|
|
|
|
|
En línea
|
Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo. Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
|
|
|
raul338
Conectado
Mensajes: 2.373
La sonrisa es la mejor forma de afrontar las cosas
|
jajajaj no seas vago y usa un for each o algo para recorrer un bucle xD mira, te escribo el codigo a la volada Dim palabras as New HashTable() Public Sub Form_Load(....).... palabras.add("@", Color.Red) palabras.add("echo", Color.Blue) End Sub '..... Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged For each s As String In palabras.Keys colorear(s, palabras(s)) Next End sub no estoy seguro si funciona (dudo dentro del for each), pero bueno, lo acabo de inventar recien, fijate si te sirve Ahora (que no me acuerdo porque no lo escribi  ) estaria bueno hacer una especie de IDE simple para varios lenguajes, ej, cuantas veces hemos abierto el tremendo pero algo lento visual studio para probar unas simples lineas. Con "nuestro" pequeño IDE se podria hacer simple jejeje....x eso implemente la opcion de cualquier color. Es buena idea, alguien se prende??? (se une?) queres hacer un parser de los colores de cada lenguaje, hay un monton de ejemplos en internet de ese tipo de proyecto. puede ser, pero un coloreador de lenguajes no puede ser considerado IDE, aparte de colorear se podria hacer una "simulacion" (copia xD) de Intellisense y compilar el codigo (solo en .net, ya que en otros lenguajes necesitamos un compilador jejej)
|
|
|
|
|
En línea
|
|
|
|
|
|
|
|