Curso de C++ Builder


El IDE (Entorno de Desarrollo Integrado)



IDE es el acrónimo de Integrated Development Environment o entorno de desarrollo integrado.

C++ Builder es una aplicación Windows que proporciona un entorno de trabajo visual para construir aplicaciones Windows que integra distintos aspectos de la programación en un entorno unificado o integrado. La integración y facilidad de manejo hace que sea una herramienta indispensable para el desarrollo rápido de aplicaciones o RAD (Rapid Application Development). Guarda una gran similitud con el IDE de Visual Basic, aunque existen ciertas diferencias que veremos.

El IDE de C++ Builder es una aplicación Windows 95 y como tal cumple con los estándares de aspecto, diseño y comportamiento que aconseja Microsoft a los desarrolladores de aplicaciones. En consecuencia, cualquiera que esté familiarizado con el manejo a nivel de usuario de Windows 95 no le supondrá ningún esfuerzo manejarlo con soltura.

 

2.1. Una visión general del IDE de C++ Builder.

El entorno de desarrollo se divide, básicamente, en tres partes. Una serie de ventanas, que pueden estar visibles u ocultas, constituyen la base de C++ Builder. El aspecto de la aplicación al inicio de una sesión de trabajo es el mostrado en la figura 2.1.

Figura 2.1. Aspecto del C++ Builder al inicio de una sesión.

 

En la parte superior se coloca la ventana principal, que contiene el menú principal, la barra de herramientas (a la izquierda) y la paleta de componentes (a la derecha). Debajo de la ventana principal, y a la izquierda se coloca el inspector de objetos. A la dercha del inspector de objetos está el área de trabajo de C++ Builder, que inicialmente muestra el diseñador de formularios, y escondido u oculto parcialmente tras éste aparece el editor de código. Veamos a grandes rasgos la misión de cada uno de ellos.

 

  1. Ventana principal.
  2. En la ventana principal se ubican el menu principal, la barra de herramientas y la paleta de componentes (figura 2.2).

    Figura 2.2. Ventana principal de C++ Builder.

     

    Menú principal.

    Permite el acceso a todas las operaciones y posibilita la configuración del programa.

    Barra de herramientas.

    Permite un acceso rápido a las operaciones que se realizan más frecuentemente.

    Paleta de componentes.

    Agrupa a los componentes que pueden incluirse en las aplicaciones.

     

  3. Inspector de objetos.
  4. Para cambiar las propiedades de los objetos que forman la aplicación y seleccionar los eventos a los que debe responder la aplicación.

    Figura 2.3. El inspector de objetos.

     

  5. Diseñador de formularios.
  6. Es una ventana cuadriculada sobre el que se disponen los componentes para diseñar las ventanas que formarán la aplicación.

    Figura 2.4. El diseñador de formularios.

     

  7. Editor de código.
  8. Un típico editor de texto multiventana para ver y editar el código de la aplicación. Está perfectamente integrado con el inspector de objetos y el diseñador de formularios.

    Figura 2.5. El editor de código.

     

Existen otras partes del entorno, que ya iremos comentando conforme vayamos profundizando en el curso. A continuación trataremos con más detalle las partes que hemos enumerado anteriormente.

 

2.2. Un estudio detallado del IDE de C++ Builder.

     

  1. Menú Principal
  2. Se puede decir que es la ventana principal del IDE de C++ Builder y siempre está visible. En él podemos encontrar todas las operaciones disponibles.

    Figura 2.6. El menú principal.

    Tiene los menús comunes a cualquier aplicación Windows: File, Edit, Search, Help..., además de otros que ya iremos estudiando a lo largo del curso.

    En el título del menú principal aparece el nombre de la aplicación (C++ Builder) y el nombre del proyecto/grupo de proyectos con el que actualmente se está trabajando. Por defecto, asigan el nombre Project1 al proyecto con el que se va a trabajar, aunque éste deberá cambiarse, lógicamente. Como veremos, el concepto de proyecto es fundamental en C++ Builder ya que es el mecanismo de organizar sensatamente todos los ficheros (formularios, código fuente, recursos, etc.) asociados a una aplicación.

    Para más detalles acerca de los menús, consultar la lista completa de menús.

     

  3. Barra de Herramientas
  4. La barra de herramientas tiene como objeto acelerar las operaciones más comunes del menú principal. Si nos acostumbramos a utilizarla agilizaremos el uso del entorno significativamente. Su aspecto habitual es el que mostramos en la figura 2.7.

    Figura 2.7. La barra de herramientas.

    Si pasamos el ratón sobre los iconos nos aparecerán unos globos o cuadros de ayuda, informándonos de cual es la funcionalidad de cada uno de ellos.

    La barra de herramientas se puede personalizar (al igual que casi todas las partes del entorno) pulsando con el botón derecho y seleccionando Properties.

     

  5. Paleta de Componentes
  6. Los componentes constituyen los bloques básicos sobre la que se construyen aplicaciones Windows con C++ Builder basadas en la VCL (Visual Component Library) y son la base de la VCL.

    Todos los componentes (visuales y no visuales) están accesible rápida y cómodamente gracias a la paleta de componentes. Podemos decir que es un gran almacén de componentes listos para ser incorporados a una aplicación, seleccionándolo y colocándolo en un formulario.

    Por conveniencia, todos los componentes disponibles se encuentran organizados en distintas páginas o carpetas según su funcionalidad. Cada pestaña de la paleta de componentes da acceso a un conjunto de iconos que representan a componentes que pueden usarse para diseñar la aplicación. Su aspecto es el que mostramos en la figura 2.8.

    Figura 2.8. La paleta de componentes.

    A diferencia con Visual Basic, todos los componentes de C++ Builder se encuentran cargados por defecto, aunque se le pueden añadir más mediante las opciones del menú de componentes (opción Component del menú principal). Cada componente tiene asignada una página, por lo que el usuario no puede elegir la ubicación de los componentes disponibles por defecto en la paleta de componentes, aunque puede modificar la disposición de las páginas y añadir nuevas páginas o componentes ( Tools | Environment Options)

    Para colocar un componente en un formulario se debe seleccionar en la paleta de componentes el botón que representa al componente y a continuación, pinchar sobre el formulario donde se desea colocalo. Una estrategia alternativa (y menos utilizada) es seleccionar el componente en la ventana Components, que se abre seleccionando View | Component List.

    Conocer los componentes y su filosofía de trabajo (propiedades, métodos y eventos) es fundamental para un programador. En la sección 3 discutimos con más profundidad sobre los componentes disponibles en C++ Builder y en la sección 4 discutimos acerca de la estructura de la VCL.

    Enlaces adicionales:

    Para más detalles acerca de los componentes disponibles, consultar la lista completa de componentes, agrupados por páginas.
    Para más detalles acerca de cómo configurar y manipular los componentes, consultar la relación de propiedades, métodos y eventos de componentes.

     

  7. Diseñador de Formularios
  8. Como hemos indicado anteriormente, es una ventana cuadriculada quer sirve para diseñar las ventanas (o formularios) que formarán la aplicación (ver figura 2.4). Es una herramienta visual destinada a diseñar y presentar la interfaz de usuario (la apariencia externa) de una aplicación. Un formulario puede ser la ventana principal de un programa, un cuadro de diálogo o cualquier otra ventana.

    Mediante el uso del ratón podemos colocar componentes de la paleta de componentes en el área de diseño. Lo único que tenemos que hacer es:

    1. Buscar el componente en la paleta de componentes.
    2. Pinchar sobre el componente para seleccionarlo.
    3. Pichar en el formulario: el componente ha quedado asociado al formulario.
    4. Arrastrarlo hasta su posición final.

    La posición de un componente siempre se ajusta al punto más próximo de la rejilla para facilitar su ajuste (su alineación). La opciones relacionadas con la rejilla pueden modificarse en Tools | Environment Options.

    Siempre hay un componente (o en su defecto, el propio formulario) activo. Visualmente se sabe cuál es porque aparece enmarcado con trazos discontínuos en el diseñador de formularios. Se puede activar cualquier componente pinchando (un sólo click) sobre él.

    Si se pincha dos veces en lugar de una, se activa el editor de código para escribir el gestor del evento OnClick asociado a ese componente. Si ésto no es lo que queremos basta con volver a activar el diseñador de formularios y continuar con la fase de diseño. Cuando se guarde el proyecto, el código que C++ Builder ha insertado automáticamente desaparecerá porque no hemos introducido ningún código para ese gestor.
     
    En ningún caso se borrará manualmente lo que C++ Builder ha insertado automáticamente: podría provocar una inconsistencia interna y hacer inaprovechable el trabajo realizado.

    EJERCICIO 1: Diseño de un formulario.

     

  9. Inspector de Objetos
  10. Se trata, sin duda, de una de las herramientas más potentes y atractivas de C++ Builder. Su aspecto es el que mostramos anteriormente en la figura 2.3. Se trata de una ventana que contiene dos páginas: Properties y Events. En la figura 2.9 mostramos el aspecto de las dos páginas en cuestión para el formulario que aparece por defecto al iniciar C++ Builder.

    Figura 2.9. Las dos páginas (Properties y Events) del inspector de objetos.

     

    Cada componente tiene asociado un conjunto de propiedades y métodos y un conjunto de eventos a los que puede responder. Con el inspector de objetos podremos moldear los componentes de una aplicación según nuestras necesidades, en cuanto a su apariencia (propiedades) y funcionalidad (eventos a los que puede responder). En definitiva, podemos modificar las propiedades de los componentes y construir los gestores de eventos a los que éstos pueden responder.

    En la parte superior se especifica el objeto activo (en la figura 2.9, el formulario, llamado Form1). Las propiedades del objeto activo aparecen en la página con la pestaña Properties y los eventos a los que puede responder en la página con la pestaña Events.

    Para seleccionar un objeto desde el inspector de objetos se despliega la lista de objetos y se selecciona el objeto en la lista. También se puede seleccionar desde el diseñador de formularios pinchando (un solo click) sobre el objeto.
    Si lo que se desea es modificar sus propiedades, se abre la carpeta de propiedades pinchando sobre la pestaña Properties. Si lo que se desea es asociarle un gestor de eventos, se abre la carpeta de gestores de eventos seleccionando la pestaña Events.

    Por ejemplo, podríamos poner el texto Escuchar saludo en un botón colocado sobre un formulario (modificando la propiedad Caption) y escribir un código para reprodicir un fichero .WAV que contiene una grabación (escribiendo un gestor para el evento OnClick)


    EJERCICIO 2: Uso del inspector de objetos para modificar propiedades.

     

  11. Editor de Código
  12. Permite editar el código de una aplicación de una forma cómoda. Admite coloreo simple de la sintaxis y distintos archivos abiertos simultáneamente.

    En la ventana del editor pueden "pegarse" el gestor de proyectos y el inspector de clases (véase en la figura 2.10) aunque estas dos herramientas pueden aparecer también como ventanas separadas.

    Figura 2.10. El editor de código.

     

    Pulsando con el botón derecho aparece un menú contextual (figura 2.11) con algunas opciones bastante útiles.

    Figura 2.11. El menú contextual del editor de código.

    A diferencia con Visual Basic, C++ Builder nos permite el acceso a la totalidad del código fuente de la aplicación. Por esto es importante saber qué partes de ese código está mantenido automáticamente, y sobre todo ¡¡¡evitar modificarlo!!!.

    El editor de código está relacionado muy estrechamente con el inspector de objetos. Al hacer doble click en un evento, el IDE genera automáticamente el código para la función manejadora para tal evento. No tenemos que preocuparnos de cuál es exactamente el prototipo que debemos de usar para la función que maneje el evento, ya que este se generará correctamente en la unidad de código asociada al Form actual.

    Cuando queramos eliminar un manejador de evento que ha sido generado automáticamente es conveniente no borrar "a mano" la función. Lo mejor es borrar "el cuerpo" de dicha función (lo que el programador escribe) y dejar que el resto lo elimine C++ Builder (lo que ocurrirá cuando se guarde el archivo).


    EJERCICIO 3: Uso del inspector de objetos para escribir gestores de eventos con el editor de código.

     

  13. Administrador de Proyectos
  14. Un proyecto es un conjunto de archivos que trabajan en equipo para crear un archivo ejecutable independiente o una DLL. Un grupo de proyectos es un conjunto de proyectos.

    Figura 2.12. El administrador de proyectos.

     

    Los proyectos que componen un grupo de proyectos, y los archivos que componen cada uno de esos proyectos, es lo que presenta, en forma de árbol, el administrador de proyectos. Puede emplearse como navegador para seleccionar el módulo con el que se va a trabajar. Para visualizar el gestor de proyectos, seleccionar View | Project Manager. El gestor de proyectos puede "pegarse" al editor de código, arrastrándolo hasta colocarlo sobre éste último (ver figura 2.10).

    En todo momento existe un único proyecto activo (en la figura 2.12, Project1), y será este el que se ejecute si elegimos la opción Run|Run.

    Los ficheros de proyecto especifican todos los recursos necesarios (ficheros .cpp, .h, ficheros de descripción de formularios, etc.) que se necesitan para la construcción del ejecutable. Los ficheros de proyecto tienen extensión .bpr y el ejecutable que se genera tiene el mismo nombre que el proyecto y la extensión .exe, lógicamente.

    Todo proyecto en C++ Builder se compone, al menos, de un archivo de código que contiene la función principal (WinMain()). Su nombre es el nombre del proyecto, con la extensión .cpp (en la figura 2.12, Project1.cpp). Este fichero no está, habitualmente, visible, ya que no es necesario modificarlo. Puede abrirse en el editor de código con la opción Project|View Source.

    Cualquier aplicación típica tendrá al menos una ventana. Para cada ventana (en la figura 2.12, Form1) habrá un módulo, formado por una pareja de ficheros: un .cpp (en la figura 2.12, Unit1.cpp) y su correspondiente .h: en el fichero .cpp estarán los gestores de los eventos asociados a los componentes de esa ventana y en el .h (que no se modificará, normalmente) estará la declaración de los componentes de esa ventana.

    Además del fichero que contiene la función principal, un proyecto puede tener asociados una serie de módulos adicionales en los cuales pueden incluirse funciones y clases de objetos, como en cualquier aplicación C++. Cada uno de estos módulos estará formado por una pareja de ficheros: un .cpp y su correspondiente .h.

    Más información sobre proyectos en C++ Builder y configuración de aplicaciones.

    A un grupo de proyectos se le pueden añadir proyectos, archivos, formularios, módulos... nuevos o que ya existan.

    Hemos dicho que, en definitiva, el administrador de proyectos es únicamente un organizador de archivos. Veamos brevemente qué tipos de archivos pueden formar parte de un proyecto/grupo de proyectos, y que cuál es su cometido:

    EXT

    Descripción

    BPR

    Es el archivo makefile del proyecto. Define qué y cómo se debe compilar.

    CPP

    Archivos fuente de C++.

    H

    Archivos de cabecera de C++.

    OBJ

    Archivos objeto resultado de la compilación.

    EXE

    Es el programa ejecutable resultante.

    TDS

    Archivos temporales para la compilación incremental.

    DFM

    Archivos de descripción de formulario. Contiene los valores de las propiedades de cada componente.
    Aunque está en formato binario, puede verse como texto seleccionando View as text en el menú contextual que aparece al pulsar con el botón derecho del ratón cuando se está situado sobre el formulario.

    RES

    Un archivo de recursos.

    DSK

    Es el archivo que contiene la configuración del escritorio para un proyecto.

    BPG

    Es un archivo de grupo de proyectos. Describe qué proyectos conforman el grupo de proyectos.

    HPP

    Archivos de cabecera creados automáticamente por C++ Builder.

     

2.3. El sistema de ayuda

El sistema de ayuda será una de las herramientas que más útiles nos resultará en nuestro trabajo con C++ Builder. Especialmente la documentación de los componentes y clases predefinidas.

Saber programar con C++ Builder no significa dominar todos y cada uno de los aspectos del entorno, sino que más bien es conocer los principios en los que éste se basa, y los detalles concretos ya los buscaremos en la Ayuda cuando nos sean necesarios.

La ayuda es una ayuda estándar de Windows por lo que no entraremos en más detalles, sólo comentar que pulsando F1 obtendremos una ayuda contextual. Así, por ejemplo, en el caso de hacerlo en el editor de código, se nos ofrecerá la ayuda correspondiente a la palabra que se encuentre bajo el cursor (figuras 2.13, 2.14 y 2.15).

Figura 2.13. Ventana de ayuda que se despliega al pulsar F1 sobre la palabra clave Application

 

Figura 2.14. Ayuda detallada sobre Application variable (for standard applications).

 

Figura 2.15. Ejemplo proporcionado en la ayuda sobre Application variable (VCL Reference).

 

Pulsando F1 sobre cualquier opción de un menú se mostrará la ayuda asociada a esa opción (figura 2.16).

Figura 2.16. Ventana de ayuda mostrada al pulsar F1 estando seleccionada la opción View | Project Manager

 

C++ Builder proporciona algunas facilidades muy útiles a la hora de escribir código. Las más importantes son:

Es posible configurar estas utilidades seleccionando Tools | Environment Options | Code Insight.

 

2.4. Compilación, ejecución y depuración de programas.

El objetivo final es la creación de un programa ejecutable correcto que funcione bajo Windows. El ejecutable se construye tomando como referencia los ficheros que forman el proyecto activo. Para esta tarea se utilizan los menús Project y Run (figura 2.18).

Figura 2.18. Submenús Project y Run del menú principal.

Project

   

Run

En la compilación se trata de la obtención del programa ejecutable (extensión .EXE). Las operaciones asociadas a este objetivo se encuentran en el menú que se despliega al seleccionar la opción Project del menú principal (figura 2.18), y las más importantes son:

Si durante la compilación se detectaran errores, se mostraran en el editor de código y se puede acceder directamente a las líneas de código en las que se han detectado para facilitar su corrección.

Para ejecutar el programa basta con pinchar sobre el botón correspondiente de la barra de herramientas o seleccionar la opción Run | Run.

C++ Builder proporciona facilidades para la depuración de programas, seleccionables al desplegar el menú Run (figura 2.18). Las más importantes son:

Para que la depuración sea más completa y versátil se incorporan las siguientes opciones en el mismo menú:

 

2.5. El almacén de objetos

Se accede al almacén seleccionando File | New.

Contiene formularios, cuadros de diálogo, módulos de datos, asistentes, DLLs, etc. que podemos utilizar para simplificar el desarrollo de aplicaciones. Todos ellos están prediseñados y pueden servirnos como punto de partida para nuestros propios diseños. Además se pueden incorporar nuevos elementos que nosotros desarrollemos, consiguiendo de esta forma reutilizar nuestros diseños.

Figura 2.19. El almacén de objetos.

 

En este curso utilizaremos con frecuencia el almacén para crear nuevos proyectos (File | New | Application), para crear aplicaciones de consola (File | New | Console Wizard), para añadir nuevos formularios (File | New | Form) o ficheros de código (File | New | Unit), para crear módulos de datos (File | New | Data Module), etc.

 

2.6. Ejercicios


Ejemplos de aplicaciones simples y de consola.

Página principal