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:
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
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 :¬¬
el problema sobre el pintado es q no todas las palabras empiezan con # (N)
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 :¬¬
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?
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.
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
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.
Como dijo Seba, busca Syntax Highlighter en Google, o proba buscando en recursosvisualbasic.net
Saludos, Sancho.Mazorka :¬¬
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.
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 ){
Richtextbox1.SelColor ?
Saludos Sancho.Mazorka! :¬¬
¬¬
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.