Publicado el 25 de Abril del 2018
10.965 visualizaciones desde el 25 de Abril del 2018
1,6 MB
148 paginas
Creado hace 9a (10/07/2014)
Lazarus
La Biblia del SynEdit
Lazarus
La Biblia del SynEdit
1 de 148
10/07/2014
Lazarus
AUTOR
FECHA
APLICABLE A
NVEL DEL DOCUMENTO
La Biblia del SynEdit
FICHA TÉCNICA
Tito Hinostroza – Lima Perú
Rev5 terminada en 12/04/2014
Paquete SynEdit de Lazarus 1.0.12
Los ejemplos se han desarrollado sobre Windows-32.
Medio. Se asume conocimientos de Free Pascal y Lazarus.
DOCUMENTOS PREVIOS
ninguno
BIBLIOGRAFÍA
Código fuente de SynEdit - Lazarus
Código fuente de SynEdit - SourceForge
http://forum.lazarus.freepascal.org/
http://wiki.freepascal.org/SynEdit/es
http://wiki.freepascal.org/SynEdit
2 de 148
10/07/2014
Lazarus
La Biblia del SynEdit
CONTROL DE CAMBIOS
VERSIÓN
FECHA
DESCRIPCIÓN MODIFICACIONES
Por Tito Hinostroza.
Primera versión revisada completa de la documentación.
Queda pendiente de documentar:
Los otros controles del paquete SynEdit.
Funcionamiento más detallado en modo columna. (smCurrent)
El uso de complementos.
El autocompletado.
Por Tito Hinostroza
Se ha corregido la sintaxis de algunos ejemplos.
Se amplió la sección 1.4.1 y se corrigió el gráfico.
Se agregó información a Sección 1.4.4
Por Tito Hinostroza
Se agregó Apéndice y se incluyó información sobre el algoritmo “hash”,
usado en la implementación de resaltadores en Lazarus.
Se modificó sección 2.3.6.
Se agregó sección 1.7.2
Se modificó sección 2.4
Por Tito Hinostroza
Se pasó la tabla de propiedades al final
Se agregó sección 1.4.9 sobre las propiedades “Options” y “Options2”
Se agregó información a la sección 1.4.2 y se agregó sección “Tipografía”.
Se reordenó sección 2 de resaltado de sintaxis y se completó la introducción.
Se agregó información sobre más propiedades de SynEdit.
Por Tito Hinostroza
Se corrige algunas palabras con errores en la Sección 1.3
Se modificó Sección 1.4.2
Se modificaron y completaron varias secciones.
Se creó la sección “Modificar el contenido”
Se agregó información sobre la creación de atributos en 2.3.4
Se agrega sección 2.4.
Se agrega información adicional referida a plegado de código.
Se corrige errores tipográficos.
Se agrega información sobre las clases TSynCustomFoldHighlighter y
TSynCustomHighlighter.
Se incluyen más propiedades y métodos en la sección 1.9.
Se crea la sección 1.5.1
Rev1
12/10/2013
Rev2
12/10/2013
Rev3
19/10/2013
Rev4
27/10/2013
Rev5
26/01/2014
Rev6
05/04/2014
3 de 148
10/07/2014
La Biblia del SynEdit
Lazarus
“En el principio, era TECO y VI”
4 de 148
10/07/2014
Lazarus
La Biblia del SynEdit
1 Editor con reconocimiento de Sintaxis: SynEdit.
Gran parte de este trabajo está basado en la experiencia de uso, la escasa documentación que
existe en la web, Ingeniería inversa, y al análisis del código fuente del componente SynEdit.
1.1 ¿Qué es SynEdit?
Es un componente o control que viene integrado en el entorno de Lazarus. Es un control de
edición. Permite implementar rápidamente, editores de texto, con características avanzadas como
resaltado de sintaxis.
Para ser exactos, SynEdit es todo un paquete que viene ya integrado en Lazarus cuando se
instala (y que incluye diversos componentes), pero por lo general, cuando decimos SynEdit, nos
referimos al componente TSynEdit que es el editor con posibilidades de resaltado de sintaxis.
Se puede acceder a él, a través de la pestaña “SynEdit” de la paleta de componentes. EL editor
TSynEdit, se encuentra a la izquierda. En esta pestaña hay además diversos controles relacionados a
“TSynEdit”:
TSynMemo.- Versión de TSynEdit con algunas diferencias. Tiene menos métodos y eventos
publicados. Deriva de SynEdit. Puede remplazar a SynEdit, en muchos casos.
TSynCompletion.- Control no visible que permite implementar la opción de “Completado de
código”.
TSynAutoComplete.- Control no visible que permite implementar la opción de “Auto-
Completado de código”.
TSynPasSyn.- Componente de sintaxis del lenguaje Pascal.
TSynFreePascalSyn.- Componente de sintaxis del lenguaje de Free Pascal.
TSynCppSyn.- Componente de sintaxis del lenguaje C++.
TSynJavaSyn.- Componente de sintaxis del lenguaje Java.
etc.
El control SynEdit, que se incluye en Lazarus, es una versión modificada del proyecto
independiente SynEdit. La versión adaptada para Lazarus, se ha desarrollado a partir de la versión 1.03,
5 de 148
10/07/2014
Lazarus
La Biblia del SynEdit
a la que se le ha agregado algunas características adicionales, como soporte para UTF-8 y Plegado de
código.
Este componente, está bien revisado y comprobado, ya que es el mismo que usa el IDE de
Lazarus para su Editor de Código.
Desgraciadamente no existe suficiente documentación técnica sobre el proyecto, pero lo que sí
se sabe es que es funcional y de muy buen desempeño.
1.2 Características de SynEdit
El componente SynEdit (TSynEdit) de Lazarus, tiene las siguientes características:
Componente accesible desde la IDE Lazarus.
No requiere archivos, adicionales (como es el caso de Scintilla). Una vez integrado en el
proyecto, se integra en el código sin ninguna dependencia.
Su código es completamente accesible y modificable.
Trabaja completamente en la codificación UTF-8.
Soporta coloreado de sintaxis, para varios lenguajes predefinidos o se le puede crear una nueva
sintaxis.
Soporta opciones de completado y autocompletado de código.
Soporta plegado de código (folding). Pero debe hacerse por código.
Incluye opciones de “Undo” y “Redo”, con amplia memoria de cambios.
Contiene métodos para Búsqueda y Reemplazo.
Soporta selección sencilla por columnas.
Permite numerar las líneas.
Soporta resaltadores y marcadores de texto.
1.3 Apariencia
Al agregar el componente TSynEdit al formulario, este se encuentra ya operativo. Se puede
ejecutar el programa y ver que el editor responde como cualquier cuadro de texto de tipo TMemo.
6 de 148
10/07/2014
Lazarus
La Biblia del SynEdit
La principal diferencia visual está en la barra vertical que aparece a la izquierda. Esta barra sirve
para mostrar el número de línea, y para otras opciones más. Otra diferencia es que el tamaño horizontal
de letra es uniforme. Es decir que la letra “m”, tiene el mismo ancho que la letra “l”. Este es el tipo de
letra que se carga por defecto en un “SynEdit”.
Inicialmente el SynEdit no incluye opciones de resaltado de sintaxis, porque no tiene ninguna
sintaxis asociada, todavía. Lo que si incluye por defecto, es la detección de “brackets”, es decir resalta el
paréntesis que se abre y se cierra, si es que se pone el cursor en uno de los paréntesis. El
comportamiento es similar con los corchetes, llaves y comillas. No se reconocen los apóstrofos.
Este resaltado consiste, por defecto, en poner los caracteres inicial y final, en modo negrita.
texto (texto entre paréntesis (otro texto)) más texto.
Para desactivar esta característica, se debe quitar la opción “eoBracketHighlight”, de la
propiedad “Options”.
Si se desea modificar el atributo del resaltado de los delimitadores, se puede usar el siguiente
código:
SynEdit1.BracketMatchColor.Foreground := clRed; //cambia a color rojo
Otra de las características que viene por defecto en SynEdit, es la opción de poder crear
marcadores (Ver 1.8.5 - Marcadores de texto). SI no se va a usar, esta opción se debe deshabilitarla
porque podría generar errores en tiempo de ejecución.
También las opciones de Cortar, Copiar y Pegar, se encuentran habilitadas por defecto, en el
control SynEdit, sin necesidad de implementarlas.
En general, todos los atajos que se crean por defecto en SynEdit, corresponden a acciones que
están predefinidas sin necesidad de activarlas.
7 de 148
10/07/2014
Lazarus
La Biblia del SynEdit
Existen diversas propiedades para cambiar la apariencia del control SynEdit. Describiremos
algunas de ellas.
1.3.1 Panel Vertical
El panel vertical que aparece en la parte izquierda del control, es llamada “Gutter” (canal), y es
la destinada a mostrar el número de línea, las marcas de plegado (folding), las marcas de cambio y los
marcadores.
Número de
línea
Marcadores
Marcas de
cambio
Marcas de
“folding”
Gutter
El “Gutter”, se puede mostrar u ocultar por código. Para hacerlo invisible se debería hacer:
SynEdit1.Gutter.Visible := False;
En este caso, nuestro editor tiene el nombre por defecto que se le asigna al agregarlo a un
formulario: SynEdit1.
El “Gutter”, por defecto, tiene el ancho ajustado de forma automática, es decir que cambia, de
acuerdo a la cantidad de filas en el editor. Se le puede fijar a un ancho determinado, poniendo primero
la propiedad “Autosize” a “false”:
ed.Gutter.AutoSize:=false;
ed.Gutter.Width:=30;
No es recomendable cambiar así, el ancho, porque de esta forma, no se reubican los elementos
que contiene, así que se podría perder de vista parte de los números o las marcas de “folding”.
Es preferible dejar el “Autosize” en “true” y desactivar elementos individuales del “Gutter”, para
variar su tamaño. Esto se puede hacer fácilmente con el inspector de objetos, modificando la propiedad
“Parts”, de la propiedad “Gutter”:
8 de 148
10/07/2014
Lazarus
La Biblia del SynEdit
Y luego ocultando el elemento deseado:
En este ejemplo se oculta el área destinada a los marcadores. Al ir ocultando áreas, el tamaño
total del “Gutter”, va disminuyendo.
1.3.2 Margen Derecho
Por defecto en SynEdit aparec
Comentarios de: Lazarus - La Biblia del SynEdit (2)