27 noviembre 2009

El experto cnPack (5)

Después de ver toda la interfaz de trabajo que aporta el experto cnPack vamos a pasar a ver como podemos configurarlo mediante su botón de Opciones:

También podemos acceder a las mismas seleccionando en el menú superior cnPack -> Options, donde veremos esta ventana:

Vamos a ir viendo cada una de las opciones por el orden de la lista.

FORM DESIGN WIZARD

Mediante esta opción podemos asignar atajos de teclado a los botones de la barra de herramientas de cnPack encargados de la alineación y tamaño de los componentes seleccionados:

Al pulsar el botón Settings nos aparecerá la lista de botones con su tecla de acceso rápido a la derecha:

Para asignar un atajo de teclado solo tenemos que seleccionar un botón de la lista, pinchamos con el ratón en el campo Shortcut y pulsamos aquella tecla que queremos asociar a dicho botón.

MESSAGE BOX VISUAL DESIGNER

Si estamos hartos de escribir la función de Application.MessageBox entonces podemos hacer que cnPack inserte el código de la misma automáticamente. Pero para que sea efectiva debemos asignar un atajo de teclado en el campo Shortcut, por ejemplo CTRL + 9:

Entonces al pulsar dicha combinación de teclas estando en el editor de código aparecerá este asistente:

Como podéis ver la imagen, solo tenemos que teclear el título, el contenido del mensaje y configurar el tipo de mensaje (información, pregunta, advertencia, error, etc.). Nos insertará este código:

Si volvemos a las opciones y pulsamos el botón Settings veremos esta configuración:

Estos son sus apartados:

Carriage Return: podemos definir tanto para Object Pascal como para C++ los caracteres de retorno de carro.

Delphi Code Settings: En este apartado configuramos en ancho de la identación de código mediante el campo Ident Witdh y el ancho de la línea mediante Wordwrap Width. Esto afecta a la hora de crear el código de la función MessageBox así como la identación y ancho de sus parámetros. Si activamos la opción Cast string to PChar introduce la cadena de texto del mensaje dentro de una función PChar:

C++ Builder Setting: Lo mismo que lo anterior para el código C/C++.

Wordwrap Mode: Si activamos la opción Wordwrap by Line Width separará los parámetros en línea según el ancho que hemos especificado (80 por defecto) o por el contrario si queremos hacerlo por contenido. En ninguna de las dos opciones me ha respetado al máximo de 80 caracteres cuando he puesto mensajes largos:

Other settings: podemos exportar o importar en un archivo INI la plantilla que utiliza para crear el código:

[Auto Saved]
MsgBoxCaption=Probando
MsgBoxCaptionIsVar=0
MsgBoxText=Este es un mensaje de prueba para probar si me respecta el ancho de texto al límite.
MsgBoxTextIsVar=0
MsgBoxIcon=1
MsgBoxButton=0
MsgBoxDefaultButton=0
MsgBoxResult=0
MsgBoxCodeKind=1
MsgBoxTopMost=0

COMPONENT SELECTOR

Aquí podemos activar o desactivar la opción de selección múltiple de componentes que vimos anteriormente:


TABS ORDER CONFIGURATOR

Este apartado controla las opciones que afectan al orden de tabulación de los componentes visuales de un formulario:

La ventana de opciones es esta:

Los apartados que contiene son estos:

Sort Mode: podemos hacer que el orden de tabulación sea de arriba abajo (Vertical First) o de izquierda a derecha (Horizontal First).

Add-on Process: Si está activada la opción Inverse Sort entonces el orden de tabulación irá al revés. Al activar la opción By Groups entonces considerará a los componentes con la misma anchura y altura como del mismo grupo, por lo que su tabulación será continua entre ellos (por lo menos es lo que dice la ayuda, pero por más pruebas que he realizado no he notado la diferencia).

Tab Order Label: Aquí configuramos como queremos ver el número de orden de tabulación en cada componente. Por defecto esta configurado para que se dibuje en la esquina superior izquierda del componente y con un color rojizo con borde negro. Pero si nos estorban podemos ponerlos a la derecha (Top Right) y en otro color:

Other Settings: Tenemos tres opciones donde la primera nos permite corregir el orden de tabulación cuando se mueven los componentes (Auto Update Tab Orders…). La segunda opción ya viene activada y posibilita el orden de tabulación de unos componentes que están dentro de otros (como Frames, GroupBox, etc.). Y con la opción Process All Sub-components podemos hacer que calcule el orden de tabulación a partir de las coordenadas centrales de cada componente, en vez de esquina superior izquierda (Calculate Using Component’s Center).

BOOKMARK BROWSER

En este apartado podemos configurar el navegador de marcadores de línea (BookMark) que incorpora cnPack y que solemos poner en nuestro código fuente:

Este navegador puede verse seleccionando las opciones del menú superior cnPack -> Bookmark Browser. Mostrará esta ventana:

Esta es una lista de los marcadores que hemos colocado en la unidad actual que estamos editando y si hacemos doble clic sobre alguna o pulsamos el botón del rayo, irá directamente a la línea donde está.

También vemos que con solo seleccionar un marcador nos mostrará en la parte inferior las primeras 4 líneas de código que rodean a nuestra línea marcada. En su ventana de opciones podemos cambiar el campo Show nearby para decirle cuantas líneas queremos mostrar alrededor (por defecto 2):

También está activada la opción de auto-refrescar la lista cada segundo y que se guarden en disco automáticamente. Yo creo que aquí les ha faltado la opción de poder dejar abierta la ventana de bookmarks aunque hagamos doble clic sobre uno. Es muy incómodo tener que volver a la lista cada vez que queremos saltar a otro marcador.

Las otras opciones que lleva son para cambiar la fuente y el color de la previsualización de las líneas.

SOURCE TEMPLATES

Esta opción abre la ventana que vimos anteriormente para crear, editar o eliminar las plantillas de código que tiene predeterminadas:

Contiene dos botones para importar y exportar plantillas que utilizan la extensión .cdt y se guardan en formato XML.

CODE EDITOR WIZARD

En este apartado podemos personalizar las teclas de acceso rápido que queremos para los asistentes del editor de código que tiene cnPack, así como habilitar o deshabilitar estos asistentes:

Veamos cada opción y lo que hace:

Open File Tool: abre un archivo cualquiera dentro del editor como si en Delphi hubiésemos elegido File -> Open pero con otra ventana:

Esta opción tiene predeterminado el atajo de teclado CTRL + ALT + O.

Eval Swap Tools: Este asistente lo utilizamos anteriormente para intercambiar lo que hay a la derecha o a la izquierda del operador de igualación, por ejemplo:

Clientes.FieldByName(‘NOMBRE’).AsString := sNombre;

Después de utilizar esta opción quedaría así:

sNombre := Clientes.FieldByName(‘NOMBRE’).AsString;

Lo que nos interesa aquí es asignarle una tecla rápida para no perdernos en las decenas de botones que tiene cnPack.

Editor Fullscreen Switch: esta opción es la que conmuta entre poner el editor de código a pantalla completa o dejarlo normal. Aquí le he asignado yo las teclas CTRL + ALT + F ya que es muy útil. Si pulsamos el botón Settings podemos configurar que se maximice el editor nada más arrancar Delphi y ocultar el formulario principal o restaurarlo a modo normal cuando volvamos de pantalla completa:

Delete Blank Lines Tools: lo único que podemos hacer con esta opción es asignar un atajo de teclado para eliminar las líneas vacías de código.

Comment Code Tool: este asistente lo utilizábamos para convertir las líneas de código seleccionadas en comentario.

Uncomment Code Tools: al contrario del anterior, quita los comentarios.

Toggle Comment Code Tools: pone o quita los comentarios. Yo he asignado a esta opción las teclas CTRL + ALT + C porque podemos anular muchas líneas de código rápidamente, ya que al convertir la línea en comentario pasa a la siguiente línea. Esta última característica la podemos desactivar si pulsamos sobre el botón Settings:


Ident Code Tool: Con esta opción movíamos dos espacios a la derecha el código fuente seleccionado. Aquí podemos asignar la tecla que queramos aunque yo prefiero seguir utilizando las de Delphi (CTRL + K + I).

Unident Code Tool: Mueve a la izquierda el código fuente y en Delphi sus teclas son CTRL + K + U.

ASCII Chart: esta es la opción que activa o desactiva la tabla de caracteres ASCII para ver su código en decimal o hexadecimal.

Insert Color Tool: aquí no vendría tampoco mal asignar un atajo de teclado al asistente que permite elegir un color y devuelve el número hexadecimal del mismo.

Insert Date Time Tool: esta opción pertenece al asistente que escribe en varios formatos la fecha y hora actual del sistema.

Collector: si vais a utilizar el pequeño bloc de notas que mostré anteriormente deberíais asignar una tecla rápida al mismo.

Sort Selected Lines Tool: Si asignaís un atajo de teclado a esta opción podéis ordenar las líneas de código alfabéticamente y a la velocidad del rayo.

Toggle Use/Include Tool: esta opción nos permite saltar directamente a la línea donde se encuentra la sección uses.

Toggle Var Field Tool: con esta otra opción saltamos a la sección var del procedimiento donde estamos situados.

Previous Message Line Tool y Next Message Line Tool: con las teclas rápidas ALT + , y ALT + . podemos recorrer la ventana de mensajes de Delphi por si no nos apetece coger el ratón.

Jump to Interface Tool: Salta a la línea donde declaramos la interfaz (interface).

Jump to Implementation Tool: Salta a la línea de la implementación (implementation).

Jump to Matched Keyword Tool: Salta a la siguiente palabra que estamos buscando.

Espero que no asignéis a todas un atajo de teclado porque si no vais a necesitar una tabla periódica como la de los químicos para acordaros de todas. En el próximo artículo seguiremos exprimiendo las opciones.

Pruebas realizadas en Delphi 7 y Delphi 2007.

20 noviembre 2009

El experto cnPack (4)

Continuando con la barra de botones que aparece encima del editor de código, vamos a ver las características del botón Tools to Enhace Functions about Project:

Este botón está relacionado con los archivos de nuestro proyecto. Al pulsarlo nos aparecen estas opciones:

La opción Run separately From IDE ejecuta nuestro programa como si lo hubiésemos ejecutado fuera de Delphi. Esto suele utilizarme mucho cuando tenemos que hacer una comprobación rápida y no tenemos gana de desactivar el Debugger.

Luego vienen tres opciones que llaman al explorador de Windows y saltan a los siguientes directorios:

Browse Current File’s Dir: Va a la carpeta donde están los archivos de nuestro programa.

Browse Project Dir: Va a la carpeta de nuestro proyecto.

Browse Output Dir: Muestra el contenido de la carpeta donde se compila nuestro ejecutable.

Si las opciones de nuestro proyecto apuntan a la misma carpeta, estas tres opciones harán prácticamente lo mismo. Después vienen otro grupo de opciones que solo son útiles si estamos trabajando con el editor a pantalla completa:

List Units: abre la ventana de búsqueda de unidades:

List Forms: abre la ventana de búsqueda de formularios:

Use Unit: añade otra unidad a la unidad actual. Es exactamente la misma opción que File -> Use Unit de Delphi.

Used Unit List: muestra la lista de unidades utilizadas por nuestro proyecto:

Y las tres últimas opciones de este menú están relacionadas con el proyecto:

Proyect Backup: Permite hacer una copia de seguridad de nuestro proyecto en un archivo zip. Al pulsar sobre esta opción veremos una ventana con todas las unidades:

Al pulsar sobre el botón de guardar (Compress and Save the Backup file) aparecerá este cuadro de diálogo donde debemos elegir el nombre del archivo a guardar, las opciones de compresión e incluso podemos asignar una contraseña:

Si no nos gusta comprimir la copia en un archivo zip podemos llamar a otro compresor externo (como 7-zip) para que haga el trabajo. Esto se configura en la segunda pestaña:

Pero es que además, en la tercera pestaña podemos hacer que después de realizar la copia de seguridad llame a un programa en concreto:

Con esta última opción podemos llamar por ejemplo a otro programa para que conecte por FTP y envíe la copia a un servidor externo, podemos enviarla por correo electrónico, etc.

La segunda opción (Clean Temporaly Files) se utiliza para limpiar archivos temporales que no vamos a necesitar antes de hacer la copia de seguridad:

Al pulsar sobre el botón Next nos mostrará un listado con todos los que ha encontrado:

Al pulsar sobre el botón Finish realizará el proceso de limpieza. Y por último tenemos la opción Project Dir Builder que nos va a permitir organizar la estructura de directorios de nuestro proyecto:

Esto puede ser de utilizar si queremos compartir el código fuente con otros usuarios en Internet subiendo el proyecto a un repositorio como CSV. Aunque en la ayuda no se explica muy bien sobre como utilizarlo, es algo raro.

LAS OPCIONES DE LOS SCRIPTS

Luego están las herramientas para crear scripts que se programan utilizando su propia librería. Este es el botón que se utiliza para crear los scripts:


Al pulsarlo tenemos estas tres opciones:

La primera opción abre el compilador de script:

En la segunda opción abrimos la ventana de librerías de scripts para ver los eventos que podemos programar:

La tercera opción abre el explorador de Windows y nos sitúa en la carpeta donde están los scripts de ejemplo:

Las siguientes opciones que puedan aparecer son los script creados o cargados por nosotros. Este tema de los scripts lo ampliaré más adelante si tengo más tiempo y averiguo como va.

GUARDANDO Y CARGANDO LA CONFIGURACIÓN ACTUAL

El último botón del grupo nos sirve para guardar o cargar el estado del IDE tal como lo dejamos. Esto también lo lleva por ejemplo Delphi 7 con las opciones Tools -> Environment Options y activando estas dos opciones:

Pero el inconveniente está en que solo podemos guardar un estado por proyecto, mientras que con este botón podemos guardar varios perfiles:

Al pulsarlo tenemos estas tres opciones:

La primera opción sirve para crear un nuevo snapshot. En la ventana que aparece le damos un nombre al primer campo:

Al pulsar el botón Ok veremos que ha memorizado ese snapshot en ese mismo menú:

Si nos vamos a otro proyecto y abrimos otras unidades, con sólo seleccionar este snapshot, cerrará el proyecto actual, reabrirá el proyecto donde capturamos el snapshot y abrirá todas las unidades como las dejamos. Es algo muy potente para saltar de un proyecto a otro cuando necesitamos capturar trozos de una unidad de otro proyecto para traerla a la actual.

La opción Manage Snapshot List vuelve a abrir la ventana de los snapshots creados por si queremos eliminar o modificar alguno. Y la última opción (Open Historial Files) nos muestra un histórico con todas últimas unidades que hemos tocado:


HERRAMIENTAS DE AYUDA PARA EL CÓDIGO FUENTE

Aquí tenemos el siguiente grupo de tres botones que son de gran ayuda:

El primer botón es el encargado de borrar las unidades que tenemos incluidas en la sección uses pero que ya no utilizamos:

Por ejemplo, si insertamos un componente nuevo en el formulario y guardamos se añadirá su unidad correspondiente en la sección uses, pero si lo eliminamos ya no se borra su unidad.

Al pulsar el botón Process comenzará a realizar el análisis y nos dirá que unidades tenemos vinculadas que ya no utilizamos:

Al pulsar el botón Clean eliminará todas las unidades inservibles, acelerando de ese modo la compilación y enlazado de los binarios DCU. Este análisis lo hace por defecto de la unidad actual, pero podemos decirle que lo haga para todas las unidades del proyecto. Si no hubiese ninguna unidad inservible diría esto:

Vamos el siguiente botón:
Esta herramienta sirve para comparar dos unidades de código fuente (o cualquier archivo de texto) en busca de sus diferencias. Es similar una la herramienta que siempre utilizo (y es gratuita) llamada WinMerge. Nos muestra esta ventana:

Mediante la opción File abrimos un archivo y luego otro:

Una vez tenemos cargados los dos archivos pulsamos el botón Source code compare (el play) o bien pulsamos la tecla F9 y realizará una comparación entre ambas unidades:

Aunque contiene una opción para mezclar ambos archivos e igualar el código fuente no lo recomiendo porque puede armar un desastre impresionante. Aquí echo de menos el poder editar manualmente ambas unidades para arreglar yo mismo las diferencias (en eso le gana WinMerge).

El último botón de este grupo sirve para abrir la ventana de opciones:

Esta ventana de opciones comenzaremos a verla en el siguiente artículo porque es inmensamente grande:

Al su lado vienen dos botones para la ayuda y el acerca de:


LA BARRA INFERIOR DE ACCESO RÁPIDO

Debajo de toda esta barra que hemos visto tenemos esta otra:

El primer botón sirve para la búsqueda de procedimientos en la unidad donde estamos:

Aparte de poder buscarlos, también podemos ver las 4 primeras líneas de código del que tenemos seleccionado en la lista:

Y como en todas las ventanas de búsqueda que incorpora cnPack, tenemos un campo de búsqueda para filtrar el listado por palabras clave.

Luego está el botón de búsqueda de unidades:

Que abre la ventana que vimos anteriormente:

Y los otros dos botones que le siguen sirven para saltar en el código a la interfaz o a la implementación, como ya vimos con anterioridad:

Luego le sigue un desplegable con la lista de clases:

Y otro con la lista de procedimientos:

Para ambos desplegables de búsqueda tenemos estos dos botones que les siguen:

Si tenemos activado el de la izquierda significa que cuando comencemos a escribir para buscar una clase o un procedimiento, solo buscará las que empiecen por la palabra que hemos puesto. En cambio, si activamos la de la derecha buscará todas que la contengan dicha palabra.

Con esto concluimos todo lo referente a las barras de herramientas que tiene el editor de código. En el próximo artículo entraremos a las opciones de cnPack para configurarlo todo.

Pruebas realizadas en Delphi 7 y Delphi 2007.

Publicidad