elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:28  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderador: [D4N93R])
| | | |-+  Ayuda con colores RichTextBox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con colores RichTextBox  (Leído 5,344 veces)
Braayhaan

Desconectado Desconectado

Mensajes: 224



Ver Perfil
Ayuda con colores RichTextBox
« en: 3 Septiembre 2009, 02:12 »

Bueno acá esto pidiendoles ayuda de nuevo xD

Necesito que en un Richtextbox se muestre el texto de distintos colores por ejemplo.

Como el GeSHi de este foro que muestra distintos colores segun el texto.

hay alguna manera de hacerlo?

Todo esto en el VB.NET Claro

Saludos!


« Última modificación: 4 Septiembre 2009, 16:49 por BlazeFire » En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: Ayuda con colores RichTextBox
« Respuesta #1 en: 3 Septiembre 2009, 02:19 »

Código
RichTextBox1.SelectionStart = RichTextBox1.Find("Palabra")
RichTextBox1.SelectionColor = Color.Yellow ' El color que quieras



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
Braayhaan

Desconectado Desconectado

Mensajes: 224



Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #2 en: 3 Septiembre 2009, 04:55 »

Me imagino que eso va en el Rich, o quizás en un timer pero me dice error.

Me dice algo de error valuetype-1 is no correct, o algo del value-1, alguna idea?

echame una mano seba!  :xD
« Última modificación: 3 Septiembre 2009, 05:22 por BlazeFire » En línea

Braayhaan

Desconectado Desconectado

Mensajes: 224



Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #3 en: 3 Septiembre 2009, 05:00 »

Bueno aca les dejo el source haber si me echan una mano ya que no entendi muy bien lo que puso el seba  :-[ me da error

Código
Public Class Form1
 
   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       If RichTextBox1.Text = "" Then
           MessageBox.Show("No se puede compilar un texto vacio")
           Return
       End If
       If SaveFileDialog1.ShowDialog = DialogResult.OK Then
           RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText)
           ProgressBar1.Visible = True
           Timer1.Start()
       End If
       Form1.ActiveForm().Text() = "Batch Creator" + SaveFileDialog1.FileName
   End Sub
 
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       If OpenFileDialog1.ShowDialog = DialogResult.OK Then
           RichTextBox1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText)
       End If
       Form1.ActiveForm().Text() = "Batch Creator" + OpenFileDialog1.FileName
   End Sub
 
   Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
End Sub
 
   Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       ProgressBar1.Increment(10)
       If ProgressBar1.Value = ProgressBar1.Maximum Then
           Timer1.Stop()
           MessageBox.Show("Se ha creado satisfactoriamente el archivo .bat en la direccion especificada")
           ProgressBar1.Value = ProgressBar1.Minimum
           ProgressBar1.Visible = False
           Return
       End If
   End Sub
 
   Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
       If RichTextBox1.Text = "" Then
           MessageBox.Show("Ya hay un nuevo documento abierto")
           Return
       End If
       Form2.Show()
   End Sub
 
   Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
       Form3.SHOW()
   End Sub
 
   Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
 
   End Sub
 
End Class
En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: Ayuda con colores RichTextBox
« Respuesta #4 en: 3 Septiembre 2009, 05:38 »

vos preguntaste como se colorea el texto, yo te respondi eso, pero despues no se que hiciste  :xD, el codigo que puse busca "Palabra" en el Richtextbox y lo colorea de amarillo. tambien podes hacerlo con SelectionStart y con SelectionLenght diciendole que desde la posicion 10 hasta la 15 sea de color rojo, de la 16 a la 20 sea azul y asi...ahi en ese codigo que pusiste no veo nada de eso. y no se donde te tira el error. igualmente yo le cambiaria varias cosas a ese codigo.

saludos.
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
Braayhaan

Desconectado Desconectado

Mensajes: 224



Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #5 en: 3 Septiembre 2009, 14:53 »

Ese codigo para colorear lo puse en el richtextbox y me da error
Hay les dejo el error que me tira.



No se que es y al darle a detalles aparecen como 100 lineas con cosas raras :xD

Help me Please ;D
En línea

Braayhaan

Desconectado Desconectado

Mensajes: 224



Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #6 en: 3 Septiembre 2009, 15:20 »

mmm bueno hasta ahora lo resolvi Asi

Código
RichTextBox1.Find("@")
RichTextBox1.SelectionColor = System.Drawing.Color.Yellow

Pero a cada rato que escribo algo se me devuelve a la primera linea me imagino que por eso del .Find

Alguna forma de que lo chequee pero que me deje escribir normal?

Thanks
En línea

Zzombi

Desconectado Desconectado

Mensajes: 171



Ver Perfil WWW
Re: Ayuda con colores RichTextBox
« Respuesta #7 en: 3 Septiembre 2009, 22:58 »

lo otro que podrias hacer es que cuando el richtextbox pierda el foco que se pinte el arroba "@" de color rojo

Código
Private Sub RichTextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.LostFocus
 
RichTextBox1.Find("@")
RichTextBox1.SelectionColor = Color.Red
 
End Sub
En línea
Keyen Night


Desconectado Desconectado

Mensajes: 315


Nothing


Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #8 en: 3 Septiembre 2009, 23:31 »

Mira yo tengo la solución a ese problema xD yo tambien lo tube pero luego me dio flojera continuar un bat maker que estaba haciendo tambien; suponiendo que tu RichTextBox se llamará r así como el mio mira el evento TextChanged
Código
Private Sub r_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles r.TextChanged
       If r.Find("@echo") <> -1 Then
           r.SelectionStart = r.Find("@echo")
           r.SelectionColor = Color.Red
           r.SelectionStart = r.TextLength
       End If
   End Sub
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

[Aporte] Factorización Relativamente Rápida
Braayhaan

Desconectado Desconectado

Mensajes: 224



Ver Perfil
Re: Ayuda con colores RichTextBox
« Respuesta #9 en: 4 Septiembre 2009, 05:53 »

Keyen Night me funciono perfecto el ejemplo pero el detalle es este:

si escribo en la primera linea @ o ECHO o Off solo me marca el primer texto escrito por ejemplo si escribi @ me marca en rojo y si despues de @ escribo ECHO me sigue marcando en rojo,Cuando el codigo de ECHO Es azul y deberia marcar el @ en rojo y el ECHO en Azul.

Pero si doy enter y paso a la siguiente linea me pone el color del Richtextbox original.

Entonces haber si me ayudan  :xD
En línea

Keyen Night


Desconectado Desconectado

Mensajes: 315


Nothing


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

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

[Aporte] Factorización Relativamente Rápida
Xtriker

Desconectado Desconectado

Mensajes: 65



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

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 »

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

Gracias de antemano  :xD
En línea

raul338


Conectado Conectado

Mensajes: 2.373


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 »

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
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  :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 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 »

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

Páginas: [1] 2 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 951 Último mensaje 19 Diciembre 2010, 19:56
por BlackZeroX (Astaroth)
Colores en RichTextBox [Solucionado] « 1 2 »
Programación Visual Basic
Stelio Kontos 17 1,894 Último mensaje 23 Marzo 2011, 15:11
por Stelio Kontos
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines