Autor
|
Tema: Ayuda con colores RichTextBox (Leído 20,623 veces)
|
Keyen Night
Desconectado
Mensajes: 496
Nothing
|
Si tambien me fije de eso habra que buscarle otra solución a eso tambien...
|
|
|
En línea
|
La Fé Mueve Montañas... ...De Dinero
La programación es más que un trabajo es más que un hobby es una pasión...
|
|
|
Atrum
|
Pues yo intente hacer un ejemplo, espero sirva, aunque tiene problemas cuando escribes entre texto, podria servir de referencia Private Reservadas As String() = _ {"if", "then", "else", "echo", "@"} 'En este arreglo pones todas las palabras que quieras que aparezcan en color
Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged Dim i As Integer = RichTextBox1.SelectionStart Dim ActualCursor As Integer = RichTextBox1.SelectionStart 'recordar el punto de donde se estaba escribiendo Dim j As Integer = 0 If i <> 0 Then 'evitar que el indice se salga del rango Do i = i - 1 'recorre en reversa hasta encontrar un espacio j = j + 1 'cuenta los caracteres de la palabra Loop While RichTextBox1.Text(i) <> CChar(" ") And i <> 0 'termina cuando encuentra un espacio End If Dim substring As String = RichTextBox1.Text.Substring(i, j).Trim() 'obtiene la ultima palabra escrita, quitandole los espacios
If Reservadas.Contains(substring) Then 'comprobar que la palabra este en la lista RichTextBox1.Find(substring, RichTextBoxFinds.Reverse) RichTextBox1.SelectionColor = Color.Blue 'Colorea el texto RichTextBox1.SelectionStart = ActualCursor End If
RichTextBox1.SelectionColor = Color.Black 'Vuelve al color primario RichTextBox1.SelectionStart = ActualCursor End Sub
Este codigo esta hecho en Visual studio 2008, espero que no este muy enrredado, espero sirva de algo amigo
|
|
|
En línea
|
|
|
|
Braayhaan
Desconectado
Mensajes: 224
|
Esta exelente Xtriker me funciono perfectamente, algun tip para ponerle mas colores? no solo el azul. Gracias de antemano
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Jó!! Xtriker me gano de mano xD xD logre hacer esto, que solo falla cuando borras todo el texto (por eso el try xD), no titilea cuando tienes un texto muuuy largo ya que solo trabaja en la linea actual. Y tiene para los colores que tu quieras!!!! Dim lastPos As Integer ' Donde se estaba escribiendo Dim nLine As Integer ' Linea donde se trabaja Dim start As Integer ' Indice del principio de la linea dentro del texto Dim final As Integer ' Fin de la linea (largo de la linea) Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged ' "@" se colorea (NOTA: Funciona a medias, con el tema ' "@asfdasd" : @ se colorea ( de que si se borra queda el color que estaba) colorear("@", Color.Red, False, False) ' "echo" se colorea ' "malechor" : echo no se colorea colorear("echo", Color.Blue, False) End Sub Sub colorear(ByVal clave As String, ByVal color As Color, Optional ByVal spaceAntes As Boolean = True, Optional ByVal spaceDespues As Boolean = True) Try ' Para recordar en que posicion estaba y no provocar problemas lastPos = rtf.SelectionStart ' Obtenemos la linea a trabajar nLine = rtf.GetLineFromCharIndex(lastPos) ' Obtenemos el indice de la linea (indice dentro de todo el texto, no conviene separar la linea en otra variable) start = rtf.GetFirstCharIndexOfCurrentLine() ' establecemos el limite para buscar la palabra clave final = rtf.Lines(nLine).Length ' Para saber si se tiene que escribir la palabra clave por separado If spaceAntes Then clave = " " & clave If spaceDespues Then clave = clave & " " ' Buscamos la palabra clave, si no esta, no hacemos nada If Not rtf.Text.IndexOf(clave, start, final) = -1 Then rtf.SelectionStart = rtf.Text.IndexOf(clave, start, final) rtf.SelectionLength = clave.Length ' Para no colorear demas.... rtf.SelectionColor = color End If ' Volvemos a donde se estaba escribiendo, y al color normal rtf.SelectionStart = lastPos rtf.SelectionLength = 0 rtf.SelectionColor = rtf.ForeColor Catch ex As Exception End Try End Sub
Tuve cierto problemita con los espacion, ya que si pones "Mecho" coloreaba "echo" en azul ¬¬ asi que bueno, tuve que ponerle esos parametros opcionales. aunque igual se entiende.....espero que te sirva!!! Eso si, mi RichTextBox se llama rtf por las dudas Eso si, quiero estar en los creditos!!!! EDIT: agregado comentarios EDIT 2: probe la solucion de striker pero me tiro error en "Reservadas.Contains" por que no era array o algo asi me dio el error, igual lo suplante por un ForEach y solo me colorea si la palabra esta en la primera linea, no en cualquier otra... u.u
|
|
« Última modificación: 4 Septiembre 2009, 18:04 pm por raul338 »
|
En línea
|
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
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
|
|
|
|
Atrum
|
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
Desconectado
Mensajes: 2.633
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 pm por raul338 »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[AYUDA] Obtener text de un RichTextBox
Programación Visual Basic
|
sebah97
|
2
|
3,433
|
19 Diciembre 2010, 19:56 pm
por BlackZeroX
|
|
|
Colores en RichTextBox [Solucionado]
« 1 2 »
Programación Visual Basic
|
Stelio Kontos
|
17
|
7,952
|
23 Marzo 2011, 15:11 pm
por Stelio Kontos
|
|
|
Ayuda con TabPages y RichTextBox!
.NET (C#, VB.NET, ASP)
|
Y0tta
|
1
|
2,035
|
8 Febrero 2016, 08:32 am
por Eleкtro
|
|
|
MOVIDO: Ayuda con TabPages y RichTextBox!
Programación Visual Basic
|
Eleкtro
|
0
|
1,385
|
8 Febrero 2016, 08:09 am
por Eleкtro
|
|
|
Ayuda con colores en bash
Scripting
|
gonuto
|
2
|
2,597
|
2 Junio 2017, 18:19 pm
por gonuto
|
|