COLOREAR CODIGO HTML CON EL METODO FIND DE VISUAL BASIC
Por: Yuri Lizama
En esta ocación vamos a colorear sintaxis html, para ello utilizaremos el metodo .find del RichTextBox. Para este ejemplo utilizaremos las llaves de php el resultado sera algo como esto:
<html><body><?phpecho("Hola Mundo"); ?><br><?php $dia=date("d.m.Y"); echo "$dia";?></body></html>
si nos damos cuenta solo colerea donde encuentra una cadena de apertura <?php y termina hasta que encuentra la llave de cierre ?>
Esta es una forma básica pero la que con un poco mas de empeño se puede convertir en un verdadero editor de codigo html bueno manos a la obra. Abrimos y Form insertamos un componente RichTextBox y pegamos el siguiente codigo:
FORM1
Private Function Resaltar_Texto(RichTextBox As RichTextBox, _
Cadena1 As String, Cadena2 As String, Color_Text As Long) As Integer
On Local Error Resume Next
' Almacena la Posicion del primer carácter cuando se encuentra la cadena
Dim Pos_Caracter As Long
' Almacena la Posicion Final del carácter cuando se encuentra la cadena
Dim PosFin_Caracter As Long
' Almacena el Tamaño y longitud del texto a buscar
Dim LenCadena As Long
' Inicio de la selección
Dim posSelInicio As Long
'Para la posición del texto seleccionado
Dim posSelLen As Long
'Guarda la posición y la longitud del texto que está seleccionado
posSelInicio = RichTextBox.SelStart
posSelLen = RichTextBox.SelLength
'Si no encuentra la cadena colorea el texto de color negro
RichTextBox.SelStart = posSelInicio
RichTextBox.SelLength = Len(RichTextBox.Text)
RichTextBox.SelColor = vblack
' Busca con Find la cadena. En la variable Guardamos la posición donde se encontró
Pos_Caracter = RichTextBox.Find(Cadena1, 0) 'la busquena no es extricta
While Pos_Caracter > 0
'Le dicimos hasta donde debe colorear el texto
PosFin_Caracter = RichTextBox.Find(Cadena2, Pos_Caracter)
If PosFin_Caracter > 0 Then
LenCadena = (PosFin_Caracter - Pos_Caracter) + 2 'si encontramos la cadena ?>, finalizamos
Else ' si no encontramos la cadena ?> seguimos coloreando hasta que encuentre la cadena ?>
LenCadena = Len(RichTextBox.Text)
End If
With RichTextBox
'asignamos la variable anterior a la propiedad SelStart del RichTextBox
.SelStart = Pos_Caracter
'Establecemos en SelLength el tamaño de la cadena nuevamente
.SelLength = LenCadena
'Esto le asigna el color de resalte que aplicará _
al texto encontrado en el Richtextbox
.SelColor = Color_Text
'Seguimos buscando mas coincidencias
Pos_Caracter = .Find(Cadena1, _
(Pos_Caracter + LenCadena))
End With
Wend
' Seteamos las propiedades SelStart y Sellength
RichTextBox.SelStart = posSelInicio
RichTextBox.SelLength = posSelLen
End Function
Private Sub RichTextBox1_Change()
Call Resaltar_Texto(RichTextBox1, "<?php", "?>", RGB(255, 0, 0))
End Sub
FIN DE LA FUNCION, colocamos la funcion en el evento change para que cada vez que se escriba identifique automaticamente si se encuentra o no las cadenas <?php ?>. Si queremos que la coincidencia sea extricta debemos agregar las constantes rtfWholeWord y rtfMatchCase nuestras funcion quedará asi:
Pos_Caracter = RichTextBox.Find(Cadena1, 0, , rtfWholeWord + rtfMatchCase) PosFin_Caracter = RichTextBox.Find(Cadena2, Pos_Caracter, , rtfWholeWord + rtfMatchCase)
Con ello tiene que haber un espacio despues de la llave de apertura <?php y un espacio antes de la llave de cierre ?> para que identifique que se trata de la cadena de apertura y la de cierre si omitimos esto nuestro ejemplo quedará algo así con las costantes rtfWholeWord y rtfMatchCase:
<html><body><?phpecho("Hola Mundo"); ?><br><?php $dia=date("d.m.Y"); echo "$dia";?></body></html>
Espero que les sea de mucha utilidad, Seguire avanzando con esto ya que no hay mucha información o mejor dicho no hay información de como colorear sintaxis html, solo encontramos dll pero la idea es saber como crear una funcion asi.
http://www.yalpublicidad.com
Yuri Lizama