04 diciembre 2009

El experto cnPack (6)

Vamos a continuar viendo las opciones de cnPack comenzando con la ayuda que nos brinda Microsoft a través de su portal MSDN.

MSDN HELP WIZARD

Esta opción es por si queremos acceder a la ayuda de Microsoft por su portal MSDN. Esta pensada sobre todo para consultar las librerías estándar de la plataforma .NET y la API de Windows. Para consultar MSDN desde Delphi hay que seleccionar en el menú superior cnPack -> MSDN Help Wizard:

Según elijamos la opción Help o Search se irá a una página web u otra:

En su apartado de opciones podemos cambiar la página de inicio:


SOURCE FORMAT CONVERTED WIZARD

Estas opciones determinan como va a exportarse el código fuente a los formatos HTML o RTF. Su ventana de opciones nos permite asignar una combinación de teclas a cada tipo de exportación:

Supongamos por ejemplo que quiero exportar la unidad actual donde estoy a HTML. Entonces asigno la combinación de teclas CTRL + H y al pulsarla estando en el editor de código mostrará esta ventana:

Entonces elegimos por ejemplo HTML y nos pedirá donde guardar la página web. Al abrirla veremos que la conversión ha sido perfecta:

Como podemos observar en la imagen, vemos que ha mantenido correctamente la identación de código. Lo mismo podemos hacer para exportanlo a RTF para crear documentación. Estas dos opciones son muy útiles para compartir código o crear manuales para el resto de usuarios de Internet.

En la segunda pestaña de opciones tenemos la posibilidad de cambiar la fuente para adaptarla a nuestras necesidades:


BATCH FILE REPLACE

Esta opción pertenece a la búsqueda y sustitución de texto en todos los archivos del proyecto. Lo único que podemos hacer aquí es asignar una combinación de teclas a la búsqueda especial que tiene cnPack y que es muy parecida a la de Delphi:

Esta herramienta es muy parecida a la opción Search -> Find in Files que ya trae Delphi.

SOURCE COMPARE WIZARD

Aquí sólo podemos activar o desactivar la herramienta que nos permite comparar dos ficheros de código en busca de diferencias:


SOURCE STATISTICS WIZARD

cnPack incorpora una herramienta estadística que cuenta el número de líneas de código de todo el proyecto así como cada una de las unidades que incorpora. Esta información está disponible seleccionando cnPack -> Source Statistics. Aparecerá una ventana para elegir que es lo que queremos analizar:

Lo mejor es seleccionar Files in Project para tener una visión global del proyecto:

Además nos viene en la parte izquierda (entre paréntesis) el número de líneas global y el de cada unidad. En su apartado de opciones solo podemos activar o desactivar esta utilidad.

COMPONENT PREFIX WIZARD

Como vimos anteriormente, cnPack permite asignar un prefijo a cada componente que se inserta en su formulario según su clase:

Al pulsar el botón Settings de esta opción muestra todas estas posibilidades:

Y esto es lo que activan y desactivan:

Enable Modify Prefix Automatically: Esta es la opción general que activa o desactiva el asignar prefijos a los componentes.

Show Dialog when Add new Component o Rename: si desactivamos esta opción, no aparecerá la ventana de prefijos pero si lo asignará al componente insertado. Si por ejemplo insertamos tres botones a un formulario los llamará btn1, btn2 y btn3.

Prompt for Undefined Prefix: Se desactivamos la opción anterior y encuentra un componente del que no sabe el prefijo entonces mostrará el cuadro de diálogo para que se lo asignemos:

Pero si desactivamos ambas opciones entonces no volverá a preguntar el prefijo nunca.

Ignore Component Naming after Class Name: Ignora el nombre del componente para clases que no comienzan por T.

Replace the Prefix when Auto-Rename: Volver a reemplazar el prefijo al cambiarle el nombre.

Add Underscore after Prefix when Renaming: Si activamos esta opción añadirá un guión bajo entre el prefijo y el nombre que le damos al componente:

Prefix Case sensitive: Si esta opción esta activada entonces nos obliga a que el prefijo tenga las minúsculas o mayúsculas como corresponde.

Use Action Name as New Name if Connected to an Action: Si el componente que estamos nombrando tiene asignada una acción (propiedad Action asignada a una acción del componente ActionManager) entonces el nombre del componente será el prefijo más el nombre de la acción asignada.

Auto Rename when Action Changed: Si además de la opción anterior esta activada esta opción, cuando renombremos el nombre de la acción se renombrará automáticamente el nombre de nuestro componente asignado a la misma. Aunque por las pruebas que he realizado, no se entera hasta que intentamos modificar la propiedad Name del componente asociado a la acción.

Use DataField as New Name if This Proterty Exists: Al insertar un componente asociado a un campo de una base de datos como por ejemplo el componente TDBEdit entonces al modificar su propiedad DataField le cambiará el nombre al componente con el prefijo de su clase mas el nombre del campo. De ese modo nos ahorramos de asociar el campo APELLIDOS a dicho componente y luego tener que ir a su propiedad Name y poner dbedtAPELLIDOS. Lo hace sólo.

Auto Rename when DataField Changed: Si además de la opción anterior está activada esta otra entonces cuando se modifique la propiedad DataField cambiará también el nombre del componente. Aunque me ha pasado igual que antes, no se entera hasta que intento cambiar la propiedad Name.

Luego tenemos en la parte inferior de la ventana todas las clases de los componentes de Delphi y su prefijo asignado. Podemos ver que hay muchos sin definir:


Si queremos asignar nuestros propios prefijos entonces tenemos que seleccionar una clase, escribir el nuevo prefijo en el campo Prefix y pulsar el botón Modify.

PROPERTY CORRECTOR

El corrector de propiedades lo vimos anteriormente cuando tratábamos de que todos los componentes visuales tuviesen el mismo tamaño según su clase. Este corrector también puede abrirse llamando al menú superior cnPack -> Property Corrector:

En su apartado de opciones podemos definir nuestras preferencias en ciertos componentes como puede ser la fuente, el tamaño, la posición, etc.:


PROJECT EXTENSION WIZARD

Si seleccionamos la opción cnPack -> Project Enhacements podemos ver que aparece un nuevo menú para mejorar las opciones del proyecto con posibilidades como ejecutar el programa fuera de Delphi, ver los archivos del proyecto, etc:

Todas estas herramientas ya las vimos anteriormente en la barra de botones. Pues el apartado Settings de esta opción permite asignar una combinación de teclas a todo este menú:


COMMENT CROPPER

cnPack incorpora un asistente para eliminar comentarios tanto de la unidad actual como de todo el proyecto. Esta herramienta puede llamarse desde el menú cnPack -> Comments Cropper:


Al pulsar el botón Process eliminará todos los comentarios del código. En su apartado de opciones lo único que podemos hacer es asignarle una combinación de teclas o desactivarlo.

REPOSITORY LIST

En las opciones de Delphi para crear un nuevo proyecto u objeto, si seleccionamos File -> New - > Other podemos ver que cnPack a añadido su propia pestaña al repositorio:


Tiene tres plantillas para crear unidades para maninupar archivos INI o para crear test unitarios utilizando DUnit.

En el próximo artículo continuaré con las infinitas opciones de cnPack. Algún día se tienen que acabar.

Pruebas realizadas en Delphi 7 y Delphi 2007.

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