Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .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 (vbnet) [Seleccionar]

   Public Sub HighLightText(ByVal Text As RichTextBox)
       Dim oPos As Integer = Text.SelectionStart
       If oPos > 0 Then
           Dim Line As Integer = Text.GetLineFromCharIndex(Text.GetCharIndexFromPosition(Cursor.Position))
           Dim pIni As Integer, pEnd As Integer, pos As Integer, word As String
           pIni = Text.GetFirstCharIndexFromLine(Line)
           pEnd = Text.Lines(Line).Length
           For Each i As String In Words.Keys
               pos = Text.Text.IndexOf(i, pIni, pEnd)
               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
                   If pos = 0 Then
                       word = i & " "
                   Else
                       word = i
                   End If
                   pos = Text.Text.IndexOf(word, pIni, pEnd)
                   If pos <> -1 Then
                       With Text
                           .SelectionStart = pos
                           .SelectionLength = i.Length
                           If .SelectionColor <> Words(i) Then .SelectionColor = Words(i)
                       End With
                   End If
               End If
           Next
       End If
       Text.SelectionStart = oPos
   End Sub


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:
if ( var1 != var1 ){
o
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
Cita de: 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    :¬¬

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