Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales
Autor
|
Tema: problema con richtextbox (Leído 1,646 veces)
|
CH4ØZ
Desconectado
Mensajes: 105
|
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
|
|
|
|
« Última modificación: 23 Enero 2011, 20:55 por CH4ØZ »
|
En línea
|
no me juzguen si no me conocen
|
|
|
Sancho.Mazorka
Desconectado
Mensajes: 480
Gamer & Programador
|
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.
|
|
|
|
|
En línea
|
|
|
|
CH4ØZ
Desconectado
Mensajes: 105
|
el problema sobre el pintado es q no todas las palabras empiezan con # (N)
|
|
|
|
|
En línea
|
no me juzguen si no me conocen
|
|
|
Sancho.Mazorka
Desconectado
Mensajes: 480
Gamer & Programador
|
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?
|
|
|
|
|
En línea
|
|
|
|
CH4ØZ
Desconectado
Mensajes: 105
|
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?
|
|
|
|
« Última modificación: 24 Enero 2011, 01:26 por CH4ØZ »
|
En línea
|
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.
|
|
|
|
|
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
|
|
|
CH4ØZ
Desconectado
Mensajes: 105
|
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
|
|
|
|
|
En línea
|
no me juzguen si no me conocen
|
|
|
CH4ØZ
Desconectado
Mensajes: 105
|
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.
|
|
|
|
|
En línea
|
no me juzguen si no me conocen
|
|
|
|
|
CH4ØZ
Desconectado
Mensajes: 105
|
Como dijo Seba, busca Syntax Highlighter en Google, o proba buscando en recursosvisualbasic.net ya busque y ninguno me sirvio ademas de q intente editar varios y tmp funcionaron como necesito. x eso vine a pedir ayuda aca.
|
|
|
|
|
En línea
|
no me juzguen si no me conocen
|
|
|
CH4ØZ
Desconectado
Mensajes: 105
|
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 ){
|
|
|
|
|
En línea
|
no me juzguen si no me conocen
|
|
|
|
|
CH4ØZ
Desconectado
Mensajes: 105
|
¬¬ 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.
|
|
|
|
|
En línea
|
no me juzguen si no me conocen
|
|
|
|
|