Colabora
 

Codigo fuente para colorear codigo html con vb6

Ejemplo aplicado con sintaxis PHP

 

Fecha: 31/Ene/2009 (31-01-09)
Autor: Yuri Alexander - [email protected]

 


Introducción

En esta ocasión vamos a colorear sintaxis html, para ello utilizaremos el metodo .find del RichTextBox..

 

Contenido 1

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 esfuerzo se puede convertir en un verdadero editor de codigo html.

El código:

Bién ahora abrimos un 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 = vbBlack

        ' 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 función en el evento change para que cada vez que se escriba identifique automáticamente 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á así:

Pos_Caracter = RichTextBox.Find(Cadena1, 0, , rtfWholeWord + rtfMatchCase) PosFin_Caracter = RichTextBox.Find(Cadena2, Pos_Caracter, , rtfWholeWord + rtfMatchCase)

Con ello tiene que haber un espacio después 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, sólo encontramos dll compiladas, pero la idea es saber como crear una función, esta fue la forma que encontré de hacerlo.

Saludos

 



Compromiso del autor del artículo con el sitio del Guille:

Lo comentado en este artículo está probado (y funciona) con la siguiente configuración:

El autor se compromete personalmente de que lo expuesto en este artículo es cierto y lo ha comprobado usando la configuración indicada anteriormente.

En cualquier caso, el Guille no se responsabiliza del contenido de este artículo.

Si encuentras alguna errata o fallo en algún link (enlace), por favor comunícalo usando este link:

Gracias.


Código de ejemplo (comprimido):

 

Fichero con el código de ejemplo: yuri_colorear_sintaxis_src.rar - 2.64 KB

(MD5 checksum: 4C79E84FFA13F02B6205700D61AC7210)

 


Ir al índice principal de el Guille