problema con richtextbox

Iniciado por CH4ØZ, 21 Enero 2011, 22:18 PM

0 Miembros y 1 Visitante están viendo este tema.

CH4ØZ

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
no me juzguen si no me conocen

Sancho.Mazorka

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    :¬¬
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



CH4ØZ

el problema sobre el pintado es q no todas las palabras empiezan con # (N)
no me juzguen si no me conocen

Sancho.Mazorka

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    :¬¬
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



CH4ØZ

#4
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?
no me juzguen si no me conocen

seba123neo

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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

CH4ØZ

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
no me juzguen si no me conocen

CH4ØZ

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.
no me juzguen si no me conocen

Sancho.Mazorka

Como dijo Seba, busca Syntax Highlighter en Google, o proba buscando en recursosvisualbasic.net


Saludos, Sancho.Mazorka    :¬¬
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



CH4ØZ

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.
no me juzguen si no me conocen