Codigo fuente para colorear codigo html con vb6

tema enviado por YALPUBLICIDAD en Visual Basic 6.0
tema iniciado el 24/12/2008

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