Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: CH4ØZ en 21 Enero 2011, 22:18 pm



Título: problema con richtextbox
Publicado por: CH4ØZ en 21 Enero 2011, 22:18 pm
bueno mi problema es que estoy tratando de realizar un highlight de determinadas palabras en el richtextbox.
el codigo q cree, funciona, pero solo a medias. dado que por ejemplo si yo tengo q la palabra "#define" debe salir azul, al escribirla, sale azul, pero si yo borro "#" sigue azul. alguna idea de como podria resolver eso? y tambien q titila mientras escribo

aca dejo el codigo:

Código
  1.    Public Sub HighLightText(ByVal Text As RichTextBox)
  2.        Dim oPos As Integer = Text.SelectionStart
  3.        If oPos > 0 Then
  4.            Dim Line As Integer = Text.GetLineFromCharIndex(Text.GetCharIndexFromPosition(Cursor.Position))
  5.            Dim pIni As Integer, pEnd As Integer, pos As Integer, word As String
  6.            pIni = Text.GetFirstCharIndexFromLine(Line)
  7.            pEnd = Text.Lines(Line).Length
  8.            For Each i As String In Words.Keys
  9.                pos = Text.Text.IndexOf(i, pIni, pEnd)
  10.                If ((Char.IsLetter(Chr(pos + 1)) Or Char.IsNumber(Chr(pos + 1))) And Words(i) <> Color.Blue) Or Not Char.IsLetter(Chr(pos + 1)) Then
  11.                    If pos = 0 Then
  12.                        word = i & " "
  13.                    Else
  14.                        word = i
  15.                    End If
  16.                    pos = Text.Text.IndexOf(word, pIni, pEnd)
  17.                    If pos <> -1 Then
  18.                        With Text
  19.                            .SelectionStart = pos
  20.                            .SelectionLength = i.Length
  21.                            If .SelectionColor <> Words(i) Then .SelectionColor = Words(i)
  22.                        End With
  23.                    End If
  24.                End If
  25.            Next
  26.        End If
  27.        Text.SelectionStart = oPos
  28.    End Sub
  29.  

Nota: la funcion es llamada en el callback TextChanged


Título: Re: problema con richtextbox
Publicado por: Sancho.Mazorka en 23 Enero 2011, 09:05 am
Titila cuando escribes, porque tu codigo esta pintando todo el tiempo el texto, deberias crear una funcion que solo pinte cuando encuentre una palabra y si ya esta pintada que no la vuelva a pintar.
Con respecto a tu problema de que sigue pintado al borrar, podrias verificar el color de las palabras que estan cercanas al momento de borrar, sino empiezan con un # le sacas el azul.

Saludos, Sancho.Mazorka    :¬¬


Título: Re: problema con richtextbox
Publicado por: CH4ØZ en 23 Enero 2011, 20:20 pm
el problema sobre el pintado es q no todas las palabras empiezan con # (N)


Título: Re: problema con richtextbox
Publicado por: Sancho.Mazorka en 23 Enero 2011, 20:22 pm
Y bueno, ya que tu soft esta todo el tiempo pintando, pone que reconozca cuando borras, y si hay palabras de color, que verifique si es una palabra clave. Es lo mas simple que se me ocurre.
De que se trata tu proyecto?

Saludos, Sancho.Mazorka    :¬¬


Título: Re: problema con richtextbox
Publicado por: CH4ØZ en 23 Enero 2011, 20:54 pm
estoy tratando de crear un editor de pawn (lenguaje para programacion de scripts generalmente de juegos mp como sa-mp cs u otros). resolvi el titileo pero no lo del codigo en color cuando borro.

edit: como puedo saber el color de las palabras si no son parte de la lista q yo tengo usando este metodo?


Título: Re: problema con richtextbox
Publicado por: seba123neo en 24 Enero 2011, 02:34 am
Hola, busca en internet codigos de ejemplos de Syntax highlight tenes miles donde poder ingresar en una lista las palabras reservadas y el color que queres a cada una...

saludos.


Título: Re: problema con richtextbox
Publicado por: CH4ØZ en 24 Enero 2011, 03:48 am
seba busque varios pero con ninguno puedo lograr lo que quiero completamente, este codigo fue el resultado de varios adaptado.

el problema es q la syntaxis puede ser:
Código:
if ( var1 != var1 ){
o
Código:
if(var1!=var1){
y no me sale, x eso acudi a ustedes


Título: Re: problema con richtextbox
Publicado por: CH4ØZ en 28 Enero 2011, 03:30 am
perdon x el doble post pero segui buscando segui intentando y no encuentro la forma (N) de resaltar la sintaxis sin ningun bug. debido a q no puedo separar las palabras x " ". alguien me puede dar alguna solucion o ayudarme a encontrar una?
gracias.


Título: Re: problema con richtextbox
Publicado por: Sancho.Mazorka en 28 Enero 2011, 03:43 am
Como dijo Seba, busca Syntax Highlighter en Google, o proba buscando en recursosvisualbasic.net


Saludos, Sancho.Mazorka    :¬¬


Título: Re: problema con richtextbox
Publicado por: CH4ØZ en 28 Enero 2011, 04:21 am
Como dijo Seba, busca Syntax Highlighter en Google, o proba buscando en recursosvisualbasic.net


Saludos, Sancho.Mazorka    :¬¬

ya busque y ninguno me sirvio ademas de q intente editar varios y tmp funcionaron como necesito. x eso vine a pedir ayuda aca.


Título: Re: problema con richtextbox
Publicado por: CH4ØZ en 1 Febrero 2011, 21:41 pm
despues de varios intentos, casi logro lo que queria. la funcion hace lo que quiero, pero solo tengo un problema. supongamos q colorea una palabra del listado de su color, hasta ahi todo perfecto, pero cuando yo empiezo a borrarla, el color sigue = intente cambiar el color antes, pero queda negro. alguna forma de comparar el color de un texto? xq no puedo usar split, para separar la cadena x partes y chequear el color de cada una y no se me ocurrio alguna forma de poder comparar el color en un string asi x ej:
Código:
if(variable= 1 ){


Título: Re: problema con richtextbox
Publicado por: Sancho.Mazorka en 1 Febrero 2011, 21:44 pm
Richtextbox1.SelColor ?


Saludos Sancho.Mazorka!    :¬¬


Título: Re: problema con richtextbox
Publicado por: CH4ØZ en 1 Febrero 2011, 22:02 pm
¬¬
si se la parte de obtener el color, pero como se q seleccionar? ese es mi problema, como seleccionar el texto q no este dentro de la lista de palabras.