ElvinesS pidió ayuda en un post del foro de Hispaneobook sobre como utilizar el plugin hpwColorMemo (H.P.Wickern). Luego de estar ocupado con unos trabajos, y viendo que nadie respondió (o eso creo) me propuse darle una mano.
Como ya dije en el post Ejemplo hpwImage la mayoría de los plugins crean un control sobre un objeto rectángulo y hpwColorMemo no es la excepción.
Pero antes tenemos que configurar unos cuantos parámetros, veamos un ejemplo del código que tendría el botón Crear Control:
.//Color de Fondo
hpwColorMemoSetVar "[hpwMemoBackColor]" "clWindow"
.//Opciones para la fuente
hpwColorMemoSetVar "[hpwMemoFontName]" "Courier"
hpwColorMemoSetVar "[hpwMemoFontColor]" "clBlack"
hpwColorMemoSetVar "[hpwMemoFontSize]" "10"
.//Opciones que pueden ir en [hpwMemoFontStyle]
.//fsBold,fsItalic,fsUnderline,fsStrikeout
hpwColorMemoSetVar "[hpwMemoFontStyle]" ""
hpwColorMemoSetVar "[hpwMemoFontCharset]" "0"
.//Opciones para mostrar hint 1=On 0=Off
hpwColorMemoSetVar "[hpwMemoShowhint]" "1"
hpwColorMemoSetVar "[hpwMemoHint]" "Click en el Memo"
.//Opciones que pueden ir en [hpwMemoCursor] si es que lo
.//usas crHandPoint,crDefault,crHourGlass
.//hpwColorMemoSetVar "[hpwMemoCursor]" "crHandPoint"
.//Opciones para barras de scroll, éstas pueden ser
.//ssNone,ssBoth,ssHorizontal,ssVertical
hpwColorMemoSetVar "[hpwMemoScrollBars]" "ssVertical"
.//Opciones para el borde pueden ser bsNone,bsSingle
hpwColorMemoSetVar "[hpwMemoBorderStyle]" "bsNone"
.//Opciones Generales 1=On 0=Off
.//Habilitado
hpwColorMemoSetVar "[hpwMemoEnabled]" "1"
.//Visible
hpwColorMemoSetVar "[hpwMemoVisible]" "1"
.//Solo lectura
hpwColorMemoSetVar "[hpwMemoReadOnly]" "0"
.//Justificado de texto
hpwColorMemoSetVar "[hpwMemoWordWrap]" "0"
.//Opciones de hipervinculos en ciertas acciones 1=On 0=Off
hpwColorMemoSetVar "[hpwMemoHotSpotActive]" "1"
hpwColorMemoSetVar "[hpwMemoHotSpotColor]" "clBlue"
hpwColorMemoSetVar "[hpwMemoHotSpotMarkerColor]" "clWindow"
hpwColorMemoSetVar "[hpwMemoHotSpotBeginChar]" "<"
hpwColorMemoSetVar "[hpwMemoHotSpotEndChar]" ">"
hpwColorMemoSetVar "[hpwMemoHotSpotUnderlined]" "1"
hpwColorMemoSetVar "[Rec_memo_HotSpotAction]" "AlertBox [#34]HotSpot[#34] [#34]Hotspot: [#91]Rec_memo_HotSpotStr[#93][#34]"
.//Creacion del control
.//Creo el contro y cargo la configuracion (acciones)
.//del archivo lenguaje.cfg
hpwColorMemoCreate "Rec_memo" "[PubDir]lenguaje.cfg"
.//Le doy foco al rectangulo con el control
hpwColorMemoSetFocus "Rec_memo"
.//Por si quisiera que al crearlo cargue un texto
.//setvar "[codigo_ejemplo]" "AlertBox [#34]Titulo[#34] [#34]Texto[#34]"
.//hpwColorMemoSetText "Rec_memo" "[codigo_ejemplo]"
Como podran ver con hpwColorMemoCreate “Rec_memo” “[PubDir]lenguaje.cfg” le dije al plugin que tiene que cargar la configuración del archivo lenguaje.cfg. Pero que contiene ese archivo?.
Pues esto:
;Este es un ejemplo de archivo de configuración para hpwColorMemo
;Los comentarios comienzan con ; en el primer carácter de la linea ; (punto y coma) La lista de reglas tiene que comenzar siempre con 0
;Esta es la primer regla
0|Add
0|KeyBegEndLst.Add|[;];Red
;Ahora la segunda regla
1|Add
1|KeyDrawingType|dtKeyShow
1|Keywords.Add|AlertBox;Blue
1|Keywords.Add|Ventana;Blue
1|ZOrder|1
1|PartWord|False
1|KeyCase|False
;La tercer regla
2|Add
2|KeyDrawingType|dtBeginLineEnd
2|KeyLineEndLst.Add|.;Gray
2|ZOrder|2
Algunas observaciones:
En la primera regla
0|KeyBegEndLst.Add|[;];Red
Significa que colorea de Rojo desde [ hasta ] y también lo que contiene dentro. Resultaría algo así [variable].
En la segunda regla
1|KeyDrawingType|dtKeyShow
1|Keywords.Add|AlertBox;Blue
1|KeyCase|False
Significa que colorea la palabra entera de azul y no distingue Minúsculas de Mayúsculas.
Resultaría algo así alertbox.
En la tercer regla
2|KeyDrawingType|dtBeginLineEnd
2|KeyLineEndLst.Add|.;Gray
Significa que colorea de gris desde el comienzo al fin de la linea si encuentra al comienzo el carácter . (punto) .
Resultaría algo así .Ejemplo de comentario.
Screenshot del ejemplo
Dercarga del ejemplo:
ejemplo_hpwColorMemo.rar (948,3 KiB, 1.449 hits)
Nota: hpwColorMemo es una interesante herramienta para aquellos docentes que pretendan enseñar a sus alumnos lenguajes de programación creando su propia sintaxis como bien lo propone ElvinesS en el post original. Yo estuve haciendo unas pruebas quedó lindo, pero…¿ le interesará a alguien?.