Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Colorear TAGS HTML con RichTextBox

Estas en el tema de Colorear TAGS HTML con RichTextBox en el foro de Visual Basic clásico en Foros del Web. Hola amigos, Estoy intentando colorear con un RichTextBox algunos tags HTML, mientras escribo. El problema es que los ejemplos que encontré, el texto parpadea ó ...
  #1 (permalink)  
Antiguo 09/12/2009, 19:10
hugui
Invitado
 
Mensajes: n/a
Puntos:
Sonrisa Colorear TAGS HTML con RichTextBox

Hola amigos,

Estoy intentando colorear con un RichTextBox algunos tags HTML, mientras escribo.
El problema es que los ejemplos que encontré, el texto parpadea ó titila mientras escribo los tags... porque recorre (con bucle) todo el texto para identificarlos y colorearlos...

¿Alguien sabe como hacer un coloreo mientras se escribe en un RTB sin que titile ó parpadee todo el texto?

¿Alguien me puede ayudar con esto?

Lo necesito para reconocer los tags HTML, pero también XML... me sirve un ejemplo sencillo...


Desde ya muchas gracias,
Un saludo,
Hugui
  #2 (permalink)  
Antiguo 09/12/2009, 20:12
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Colorear TAGS HTML con RichTextBox

Como imaginaba el truco parece estar en hacer invisible el texto antes de modificarlo y hacerlo visible después.

Con una sub que he creado para el mensaje anterior he hecho unas pruebas con este código y ha dejado de parpadear.
Aqui te dejo el código que he probado:

Código :
Ver original
  1. Sub CambiaColor(Palabra As String, Color As ColorConstants, RTB As RichTextBox, Optional DiferenciarEntreMayuscMinusc As Boolean = False)
  2.   Dim Pos As Long
  3.   Pos = IIf(DiferenciarEntreMayuscMinusc, InStr(1, RTB.Text, Palabra), InStr(1, UCase$(RTB.Text), UCase$(Palabra)))
  4.   Do While Pos > 0
  5.     RTB.SelStart = Pos - 1
  6.     RTB.SelLength = Len(Palabra)
  7.     RTB.SelColor = Color
  8.     Pos = IIf(DiferenciarEntreMayuscMinusc, InStr(Pos + 1, RTB.Text, Palabra), InStr(Pos + 1, UCase$(RTB.Text), UCase$(Palabra)))
  9.   Loop
  10. End Sub
  11.  
  12. Private Sub Form_Load()
  13.   Me.Show
  14.   RichTextBox1.Text = "<html>" & vbCrLf & _
  15. "<head></head>" & vbCrLf & _
  16. "<body>" & vbCrLf & _
  17. "</body>" & vbCrLf & _
  18. "</html>"
  19. End Sub
  20.  
  21. Private Sub RichTextBox1_Change()
  22.   Dim Pos As Long
  23.   RichTextBox1.Visible = False
  24.   Pos = RichTextBox1.SelStart
  25.   CambiaColor "<html>", vbBlue, RichTextBox1
  26.   CambiaColor "</html>", vbBlue, RichTextBox1
  27.   CambiaColor "<head>", vbRed, RichTextBox1
  28.   CambiaColor "</head>", vbRed, RichTextBox1
  29.   CambiaColor "<body>", vbGreen, RichTextBox1
  30.   CambiaColor "</bodY>", vbGreen, RichTextBox1
  31.   RichTextBox1.SelStart = Pos
  32.   RichTextBox1.Visible = True
  33.   RichTextBox1.SetFocus ' hay que enfocar porque al ponerlo invisible pierde el foco
  34. End Sub

Suerte

PD: Como no he puesto control de errores, este ejemplo da error al arrancar, ya que en el load se modifica el texto y al querer enfocarlo no puede porque el form aun no es visible.
Añado una línea en el Load que evita el error.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 09/12/2009 a las 20:20
  #3 (permalink)  
Antiguo 09/12/2009, 20:54
hugui
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Colorear TAGS HTML con RichTextBox

Hola pkj,

Impresionante, estas en todos lados, ¿Cómo haces?
Gracias por el ejemplo, funciona bien, la tienes muy clara.


Sobre este tema, ¿Te puedo pedir un pequeño favor?

Mira esto:
http://www.forosdelweb.com/f69/reto-...tivo-758699/#8

Me gustaría colorear también, este tema de los mensajes rotativos, porque la verdad, estaría muy bueno...


¡Mil gracias! De verdad... ya estaba sacando chispas con esto de colorear...


Un saludo,
Hugui


PD: Sí, sobre el error no quería decirte nada, porque me parecía un error menor... GRACIAS

Última edición por hugui; 09/12/2009 a las 21:03 Razón: Me.Show
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:04.