elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ayuda con colores RichTextBox
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con colores RichTextBox  (Leído 20,492 veces)
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #10 en: 4 Septiembre 2009, 06:53 am »

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

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: Ayuda con colores RichTextBox
« Respuesta #11 en: 4 Septiembre 2009, 16:02 pm »

Pues yo intente hacer un ejemplo, espero sirva, aunque tiene problemas cuando escribes entre texto, podria servir de referencia

Código:
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 Desconectado

Mensajes: 224



Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #12 en: 4 Septiembre 2009, 16:42 pm »

Esta exelente Xtriker me funciono perfectamente, algun tip para ponerle mas colores? no solo el azul.

Gracias de antemano  :xD
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Ayuda con colores RichTextBox
« Respuesta #13 en: 4 Septiembre 2009, 17:02 pm »

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!!!!  ;D


Código
  1. Dim lastPos As Integer ' Donde se estaba escribiendo
  2.    Dim nLine As Integer   ' Linea donde se trabaja
  3.    Dim start As Integer   ' Indice del principio de la linea dentro del texto
  4.    Dim final As Integer   ' Fin de la linea (largo de la linea)
  5.  
  6.    Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged
  7.        ' "@" se colorea                         (NOTA: Funciona a medias, con el tema
  8.        ' "@asfdasd" : @ se colorea        ( de que si se borra queda el color que estaba)
  9.        colorear("@", Color.Red, False, False)
  10.        ' "echo" se colorea
  11.        ' "malechor" : echo no se colorea
  12.        colorear("echo", Color.Blue, False)
  13.    End Sub
  14.  
  15.    Sub colorear(ByVal clave As String, ByVal color As Color, Optional ByVal spaceAntes As Boolean = True, Optional ByVal spaceDespues As Boolean = True)
  16.        Try
  17.            ' Para recordar en que posicion estaba y no provocar problemas
  18.            lastPos = rtf.SelectionStart
  19.            ' Obtenemos la linea a trabajar
  20.            nLine = rtf.GetLineFromCharIndex(lastPos)
  21.            ' Obtenemos el indice de la linea (indice dentro de todo el texto, no conviene separar la linea en otra variable)
  22.            start = rtf.GetFirstCharIndexOfCurrentLine()
  23.            ' establecemos el limite para buscar la palabra clave
  24.            final = rtf.Lines(nLine).Length
  25.  
  26.            ' Para saber si se tiene que escribir la palabra clave por separado
  27.            If spaceAntes Then clave = " " & clave
  28.            If spaceDespues Then clave = clave & " "
  29.  
  30.            ' Buscamos la palabra clave, si no esta, no hacemos nada
  31.            If Not rtf.Text.IndexOf(clave, start, final) = -1 Then
  32.                rtf.SelectionStart = rtf.Text.IndexOf(clave, start, final)
  33.                rtf.SelectionLength = clave.Length ' Para no colorear demas....
  34.                rtf.SelectionColor = color
  35.            End If
  36.  
  37.            ' Volvemos a donde se estaba escribiendo, y al color normal
  38.            rtf.SelectionStart = lastPos
  39.            rtf.SelectionLength = 0
  40.            rtf.SelectionColor = rtf.ForeColor
  41.        Catch ex As Exception
  42.  
  43.        End Try
  44.    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  :P

Eso si, quiero estar en los creditos!!!!  ;D ;D ;D

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

Braayhaan

Desconectado Desconectado

Mensajes: 224



Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #14 en: 4 Septiembre 2009, 17:37 pm »

Si me fije en eso del que puso Xtriker solo marca la primera linea, raul el tuyo esta perfecto pero hay alguna forma para ponerlo Asi como el de Xtriker? que se ponian todos los Comandos de Batch en una linea? porque son bastantes y tener que escribir colorear...."del".... es como mucho no xDD.

Disculpen tanto fastidio  :-[ :xD
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Ayuda con colores RichTextBox
« Respuesta #15 en: 4 Septiembre 2009, 17:42 pm »

jajajaj no seas vago y usa un for each o algo para recorrer un bucle xD
mira, te escribo el codigo a la volada

Código
  1.    Dim palabras as New HashTable()
  2. Public Sub Form_Load(....)....
  3.    palabras.add("@", Color.Red)
  4.    palabras.add("echo", Color.Blue)
  5. End Sub
  6.  
  7. '.....
  8.  
  9. Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged
  10.    For each s As String In palabras.Keys
  11.        colorear(s, palabras(s))
  12.    Next
  13. End sub
  14.  

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 Desconectado

Mensajes: 224



Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #16 en: 4 Septiembre 2009, 18:09 pm »

mmm no me funka Raul, bueno de todas formas voy a seguir chequeando por mi cuenta creo que ya los moleste bastante :xD.


Posdata: Felicitaciones es tu mensaje 100!  :xD
En línea

Atrum

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: Ayuda con colores RichTextBox
« Respuesta #17 en: 4 Septiembre 2009, 18:25 pm »

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  :huh:  , 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

Código
  1. Private ReservadasBlue As String() = _
  2.    {"if", "then", "else"} 'En este arreglo pones todas las palabras que quieras que aparezcan en color Azul
  3.  
  4.    Private ReservadasRed As String() = _
  5.    {"echo", "@"} 'En este arreglo pones todas las palabras que quieras que aparezcan en color Rojo
  6.  
  7.    Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
  8.  
  9.        ' aqui obtiene un arreglo de palabras desde el inicio
  10.        ' hasta donde esta la posicion del cursor
  11.        Dim Palabras As String() = RichTextBox1.Text.Substring(0, RichTextBox1.SelectionStart).Split()
  12.  
  13.        'Aqui obtenemos el ultimo elemento del arreglo de palabras
  14.        Dim UltimaEscrita As String = Palabras(Palabras.Length - 1)
  15.  
  16.        'Guardamos la posicion del cursor
  17.        Dim PosCursor As Integer = RichTextBox1.SelectionStart
  18.  
  19.        'Verificamos si la palabra escrita esta en el el arreglo
  20.        'en este caso declare un arreglo para cada color
  21.        If ReservadasBlue.Contains(UltimaEscrita) Then
  22.            RichTextBox1.Find(UltimaEscrita, RichTextBoxFinds.Reverse)
  23.            RichTextBox1.SelectionColor = Color.Blue
  24.            RichTextBox1.SelectionStart = PosCursor
  25.        End If
  26.  
  27.        'aqui para el color rojo, en caso de añadir mas pues solo seria
  28.        'cosa de agregar mas arreglos y mas condicionales
  29.        If ReservadasRed.Contains(UltimaEscrita) Then
  30.            RichTextBox1.Find(UltimaEscrita, RichTextBoxFinds.Reverse)
  31.            RichTextBox1.SelectionColor = Color.Red
  32.            RichTextBox1.SelectionStart = PosCursor
  33.        End If
  34.  
  35.        'regresamos al color original
  36.        RichTextBox1.SelectionColor = Color.Black
  37.    End Sub
  38.  

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 Desconectado

Mensajes: 224



Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #18 en: 4 Septiembre 2009, 18:45 pm »

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 Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Ayuda con colores RichTextBox
« Respuesta #19 en: 4 Septiembre 2009, 18:49 pm »

Citar
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  :huh:  , 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  ;D

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  ;D) 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 :laugh: :xD

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

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[AYUDA] Obtener text de un RichTextBox
Programación Visual Basic
sebah97 2 3,410 Último mensaje 19 Diciembre 2010, 19:56 pm
por BlackZeroX
Colores en RichTextBox [Solucionado] « 1 2 »
Programación Visual Basic
Stelio Kontos 17 7,822 Último mensaje 23 Marzo 2011, 15:11 pm
por Stelio Kontos
Ayuda con TabPages y RichTextBox!
.NET (C#, VB.NET, ASP)
Y0tta 1 2,017 Último mensaje 8 Febrero 2016, 08:32 am
por Eleкtro
MOVIDO: Ayuda con TabPages y RichTextBox!
Programación Visual Basic
Eleкtro 0 1,370 Último mensaje 8 Febrero 2016, 08:09 am
por Eleкtro
Ayuda con colores en bash
Scripting
gonuto 2 2,556 Último mensaje 2 Junio 2017, 18:19 pm
por gonuto
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines