378
 Programación visual de aplicaciones con C++ Builder Curso de C++ Builder  Introducción  El IDE  Componentes  La VCL  Programación orientada a objetos en C++  Tratamiento de excepciones  Programación con hebras  Acceso a bases de datos  Enlaces interesantes  Todo en un ZIP file:///D|/Manuales/index.html (1 of 2) [27/02/2003 16:23:49]

C++ Builder

Embed Size (px)

Citation preview

Programacin visual de aplicaciones con C++ Builder

Curso de C++ Builder

Introduccin El IDE Componentes La VCL Programacin orientada a objetos en C++ Tratamiento de excepciones Programacin con hebras Acceso a bases de datos Enlaces interesantes Todo en un ZIP

file:///D|/Manuales/index.html (1 of 2) [27/02/2003 16:23:49]

Programacin visual de aplicaciones con C++ Builder

ndice

Ejercicios

Apndices

Francisco Jos Cortijo Bon & Fernando Berzal GalianoTodos los derechos reservados por los autores sobre el contenido de este documento electrnico. Queda prohibido su uso comercial sin el consentimiento escrito de los autores. Cualquier uso de este material debe ser comunicado a los autores.

IDE | Componentes | VCL | OOP | Excepciones | Hebras | Bases de datos | Enlaces

file:///D|/Manuales/index.html (2 of 2) [27/02/2003 16:23:49]

Introduccin

Curso de C++ Builder Introduccin

Para ser un buen programador en C++ Builder existen distintos aspectos que se deben conocer:q

q

q

q

El Entorno de desarrollo integrado de C++ Builder (el IDE). En la seccin 2 se estudia el IDE de C++ Builder. Los componentes disponibles para crear aplicaciones Windows, y sobre stos, sus propiedades ms importantes, los mtodos asociados y los eventos a los que pueden responder (seccin 3). Un conocimiento genrico acerca de la biblioteca de clases visuales de Borland (la VCL), en definitiva, conocer a grandes rasgos la jerarqua de clases de la que forman parte los componentes (seccin 4). Los conceptos fundamentales de la metodologa de programacin orientada a objetos (POO), el lenguaje C++ y cmo se debe usar bajo el estilo de C++ Builder (seccin 5). Ciertas tcnicas avanzadas de programacin, como pueden ser el tratamiento de excepciones, la programacin con hebras, la construccin de componentes personalizados, la interaccin con bases de datos, la programacin de aplicaciones para Internet...

q

En el transcurso del curso se pretende introducir al alumno en la programacin de aplicaciones para Windows utilizando C++ Builder. Aunque se supone que ste ya posee cierta experiencia en la programacin de C, y conocimientos muy bsicos de programacin orientada a objetos.

Pgina principal

file:///D|/Manuales/intro/1.html (1 of 2) [27/02/2003 16:23:49]

Introduccin

Francisco Cortijo Bon

file:///D|/Manuales/intro/1.html (2 of 2) [27/02/2003 16:23:49]

IDE

Curso de C++ Builder El IDE (Entorno de Desarrollo Integrado)

q q q q q q

2.1. Una visin general del IDE de C++ Builder.. 2.2. Un estudio detallado del IDE de C++ Builder.. 2.3. El sistema de ayuda. 2.4. Compilacin, ejecucin y depuracin de programas. 2.5. El almacn de objetos. 2.6. Ejercicios: Ejemplos de aplicaciones simples y de consola .

IDE es el acrnimo de Integrated Development Environment o entorno de desarrollo integrado. C++ Builder es una aplicacin Windows que proporciona un entorno de trabajo visual para construir aplicaciones Windows que integra distintos aspectos de la programacin en un entorno unificado o integrado. La integracin y facilidad de manejo hace que sea una herramienta indispensable para el desarrollo rpido 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 aplicacin Windows 95 y como tal cumple con los estndares de aspecto, diseo 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 ningn esfuerzo manejarlo con soltura.

2.1. Una visin general del IDE de C++ Builder.El entorno de desarrollo se divide, bsicamente, en tres partes. Una serie de ventanas, que pueden estar visibles u ocultas, constituyen la base de C++ Builder. El aspecto de la aplicacin al inicio de una sesin de trabajo es el mostrado en la figura 2.1. Figura 2.1. Aspecto del C++ Builder al inicio de una sesin.

file:///D|/Manuales/intro/2.html (1 of 26) [27/02/2003 16:23:53]

IDE

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 diseador de formularios, y escondido u oculto parcialmente tras stefile:///D|/Manuales/intro/2.html (2 of 26) [27/02/2003 16:23:53]

IDE

aparece el editor de cdigo. Veamos a grandes rasgos la misin de cada uno de ellos.

1. Ventana principal. 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 configuracin del programa. Barra de herramientas. Permite un acceso rpido a las operaciones que se realizan ms frecuentemente. Paleta de componentes. Agrupa a los componentes que pueden incluirse en las aplicaciones.

file:///D|/Manuales/intro/2.html (3 of 26) [27/02/2003 16:23:53]

IDE

2. Inspector de objetos. Para cambiar las propiedades de los objetos que forman la aplicacin y seleccionar los eventos a los que debe responder la aplicacin. Figura 2.3. El inspector de objetos.

3. Diseador de formularios. Es una ventana cuadriculada sobre el que se disponen los componentes para disear las ventanas que formarn la aplicacin. Figura 2.4. El diseador de formularios.

file:///D|/Manuales/intro/2.html (4 of 26) [27/02/2003 16:23:53]

IDE

4. Editor de cdigo. Un tpico editor de texto multiventana para ver y editar el cdigo de la aplicacin. Est perfectamente integrado con el inspector de objetos y el diseador de formularios. Figura 2.5. El editor de cdigo.

file:///D|/Manuales/intro/2.html (5 of 26) [27/02/2003 16:23:53]

IDE

Existen otras partes del entorno, que ya iremos comentando conforme vayamos profundizando en el curso. A continuacin trataremos con ms detalle las partes que hemos enumerado anteriormente.

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

1.

Men Principal

file:///D|/Manuales/intro/2.html (6 of 26) [27/02/2003 16:23:53]

IDE

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 mens comunes a cualquier aplicacin Windows: File, Edit, Search, Help..., adems de otros que ya iremos estudiando a lo largo del curso. En el ttulo del men principal aparece el nombre de la aplicacin (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, lgicamente. Como veremos, el concepto de proyecto es fundamental en C++ Builder ya que es el mecanismo de organizar sensatamente todos los ficheros (formularios, cdigo fuente, recursos, etc.) asociados a una aplicacin.

Para ms detalles acerca de los mens, consultar la lista completa de mens.

2.

Barra de HerramientasLa barra de herramientas tiene como objeto acelerar las operaciones ms 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 ratn sobre los iconos nos aparecern unos globos o cuadros de ayuda, informndonos 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 botn derecho y seleccionando Properties.

file:///D|/Manuales/intro/2.html (7 of 26) [27/02/2003 16:23:53]

IDE

3.

Paleta de ComponentesLos componentes constituyen los bloques bsicos 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) estn accesible rpida y cmodamente gracias a la paleta de componentes. Podemos decir que es un gran almacn de componentes listos para ser incorporados a una aplicacin, seleccionndolo y colocndolo en un formulario. Por conveniencia, todos los componentes disponibles se encuentran organizados en distintas pginas o carpetas segn su funcionalidad. Cada pestaa de la paleta de componentes da acceso a un conjunto de iconos que representan a componentes que pueden usarse para disear la aplicacin. 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 aadir ms mediante las opciones del men de componentes (opcin Component del men principal). Cada componente tiene asignada una pgina, por lo que el usuario no puede elegir la ubicacin de los componentes disponibles por defecto en la paleta de componentes, aunque puede modificar la disposicin de las pginas y aadir nuevas pginas o componentes ( Tools | Environment Options) Para colocar un componente en un formulario se debe seleccionar en la paleta de componentes el botn que representa al componente y a continuacin, 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 filosofa de trabajo (propiedades, mtodos y eventos) es fundamental para un programador. En la seccin 3 discutimos con ms profundidad sobre los componentes disponibles en C++ Builder y en la seccin 4 discutimos acerca de la estructura de la VCL. Enlaces adicionales:

file:///D|/Manuales/intro/2.html (8 of 26) [27/02/2003 16:23:53]

IDE

Para ms detalles acerca de los componentes disponibles, consultar la lista completa de componentes, agrupados por pginas.

Para ms detalles acerca de cmo configurar y manipular los componentes, consultar la relacin de propiedades, mtodos y eventos de componentes.

4.

Diseador de FormulariosComo hemos indicado anteriormente, es una ventana cuadriculada quer sirve para disear las ventanas (o formularios) que formarn la aplicacin (ver figura 2.4). Es una herramienta visual destinada a disear y presentar la interfaz de usuario (la apariencia externa) de una aplicacin. Un formulario puede ser la ventana principal de un programa, un cuadro de dilogo o cualquier otra ventana. Mediante el uso del ratn podemos colocar componentes de la paleta de componentes en el rea de diseo. Lo nico que tenemos que hacer es: 1. 2. 3. 4. Buscar el componente en la paleta de componentes. Pinchar sobre el componente para seleccionarlo. Pichar en el formulario: el componente ha quedado asociado al formulario. Arrastrarlo hasta su posicin final.

La posicin de un componente siempre se ajusta al punto ms prximo de la rejilla para facilitar su ajuste (su alineacin). 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 cul es porque aparece enmarcado con trazos discontnuos en el diseador de formularios. Se puede activar cualquier componente pinchando (un slo click) sobre l. Si se pincha dos veces en lugar de una, se activa el editor de cdigo para escribir el gestor del evento OnClick asociado a ese componente. Si sto no es lo que queremos basta con volver a activar el diseador de formularios y continuar con la fase de diseo. Cuando se guarde el proyecto, el cdigo que C++ Builder ha insertado automticamente desaparecer porque no hemos introducido ningn cdigo para ese gestor. En ningn caso se borrar manualmente lo que C++ Builder ha insertado automticamente: podra provocar una inconsistencia interna y hacer inaprovechable el trabajo realizado.

file:///D|/Manuales/intro/2.html (9 of 26) [27/02/2003 16:23:53]

IDE

EJERCICIO 1: Diseo de un formulario.

5.

Inspector de ObjetosSe trata, sin duda, de una de las herramientas ms 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 pginas: Properties y Events. En la figura 2.9 mostramos el aspecto de las dos pginas en cuestin para el formulario que aparece por defecto al iniciar C++ Builder. Figura 2.9. Las dos pginas (Properties y Events) del inspector de objetos.

file:///D|/Manuales/intro/2.html (10 of 26) [27/02/2003 16:23:53]

IDE

Cada componente tiene asociado un conjunto de propiedades y mtodos y un conjunto de eventos a los que puede responder. Con el inspector de objetos podremos moldear los componentes de una aplicacin segn 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 pgina con la pestaa Properties y los eventos a los que puede responder en la pgina con la pestaa Events. Para seleccionar un objeto desde el inspector de objetos se despliega la lista de objetos y se selecciona el objeto en la lista. Tambin se puede seleccionar desde el diseador de formularios pinchando (un solo click) sobre el objeto.file:///D|/Manuales/intro/2.html (11 of 26) [27/02/2003 16:23:53]

IDE

Si lo que se desea es modificar sus propiedades, se abre la carpeta de propiedades pinchando sobre la pestaa Properties. Si lo que se desea es asociarle un gestor de eventos, se abre la carpeta de gestores de eventos seleccionando la pestaa Events. Por ejemplo, podramos poner el texto Escuchar saludo en un botn colocado sobre un formulario (modificando la propiedad Caption) y escribir un cdigo para reprodicir un fichero .WAV que contiene una grabacin (escribiendo un gestor para el evento OnClick)

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

6.

Editor de CdigoPermite editar el cdigo de una aplicacin de una forma cmoda. Admite coloreo simple de la sintaxis y distintos archivos abiertos simultneamente. En la ventana del editor pueden "pegarse" el gestor de proyectos y el inspector de clases (vase en la figura 2.10) aunque estas dos herramientas pueden aparecer tambin como ventanas separadas.r

r

Inspector de clases: Es un navegador que muestra las clases, objetos y mtodos asociados a la aplicacin. Aparece por defecto asociada al editor (en la figura 2.10, en la parte inferior izquierda). Para abrir esta ventana: View | ClassExplorer. Administrador de proyectos: Es bsicamente un navegador entre los diferentes ficheros que forman la aplicacin. No aparece por defecto, y cuando se abre (View | Project Manager) se muestra como una ventana independiente. En la figura 2.10 se muestra asociada al editor, en la parte superior izquierda. Ms informacin en este enlace. Figura 2.10. El editor de cdigo.

file:///D|/Manuales/intro/2.html (12 of 26) [27/02/2003 16:23:53]

IDE

Pulsando con el botn derecho aparece un men contextual (figura 2.11) con algunas opciones bastante tiles. Figura 2.11. El men contextual del editor de cdigo.

file:///D|/Manuales/intro/2.html (13 of 26) [27/02/2003 16:23:53]

IDE

A diferencia con Visual Basic, C++ Builder nos permite el acceso a la totalidad del cdigo fuente de la aplicacin. Por esto es importante saber qu partes de ese cdigo est mantenido automticamente, y sobre todo evitar modificarlo!!!. El editor de cdigo est relacionado muy estrechamente con el inspector de objetos. Al hacer doble click en un evento, el IDE genera automticamente el cdigo para la funcin manejadora para tal evento. No tenemos que preocuparnos de cul es exactamente el prototipo que debemos de usar para la funcin que maneje el evento, ya que este se generar correctamente en la unidad de cdigo asociada al Form actual. Cuando queramos eliminar un manejador de evento que ha sido generado automticamente es conveniente no borrar "a mano" la funcin. Lo mejor es borrar "el cuerpo" de dicha funcin (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 cdigo.

7.

Administrador de Proyectos

file:///D|/Manuales/intro/2.html (14 of 26) [27/02/2003 16:23:53]

IDE

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 mdulo 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 cdigo, arrastrndolo 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 opcin Run|Run.

file:///D|/Manuales/intro/2.html (15 of 26) [27/02/2003 16:23:53]

IDE

Los ficheros de proyecto especifican todos los recursos necesarios (ficheros .cpp, .h, ficheros de descripcin de formularios, etc.) que se necesitan para la construccin del ejecutable. Los ficheros de proyecto tienen extensin .bpr y el ejecutable que se genera tiene el mismo nombre que el proyecto y la extensin .exe, lgicamente. Todo proyecto en C++ Builder se compone, al menos, de un archivo de cdigo que contiene la funcin principal (WinMain()). Su nombre es el nombre del proyecto, con la extensin .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 cdigo con la opcin Project|View Source. Cualquier aplicacin tpica tendr al menos una ventana. Para cada ventana (en la figura 2.12, Form1) habr un mdulo, formado por una pareja de ficheros: un .cpp (en la figura 2.12, Unit1.cpp) y su correspondiente .h: en el fichero .cpp estarn los gestores de los eventos asociados a los componentes de esa ventana y en el .h (que no se modificar, normalmente) estar la declaracin de los componentes de esa ventana. Adems del fichero que contiene la funcin principal, un proyecto puede tener asociados una serie de mdulos adicionales en los cuales pueden incluirse funciones y clases de objetos, como en cualquier aplicacin C++. Cada uno de estos mdulos estar formado por una pareja de ficheros: un .cpp y su correspondiente .h.

Ms informacin sobre proyectos en C++ Builder y configuracin de aplicaciones.

A un grupo de proyectos se le pueden aadir proyectos, archivos, formularios, mdulos... 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 cul es su cometido: EXT BPR CPP H OBJ EXE Descripcin Es el archivo makefile del proyecto. Define qu y cmo se debe compilar. Archivos fuente de C++. Archivos de cabecera de C++. Archivos objeto resultado de la compilacin. Es el programa ejecutable resultante.

file:///D|/Manuales/intro/2.html (16 of 26) [27/02/2003 16:23:53]

IDE

TDS DFM

Archivos temporales para la compilacin incremental. Archivos de descripcin 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 botn derecho del ratn cuando se est situado sobre el formulario.

RES DSK BPG HPP

Un archivo de recursos. Es el archivo que contiene la configuracin del escritorio para un proyecto. Es un archivo de grupo de proyectos. Describe qu proyectos conforman el grupo de proyectos. Archivos de cabecera creados automticamente por C++ Builder.

2.3. El sistema de ayudaEl sistema de ayuda ser una de las herramientas que ms tiles nos resultar en nuestro trabajo con C++ Builder. Especialmente la documentacin 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 ms 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 estndar de Windows por lo que no entraremos en ms detalles, slo comentar que pulsando F1 obtendremos una ayuda contextual. As, por ejemplo, en el caso de hacerlo en el editor de cdigo, 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

file:///D|/Manuales/intro/2.html (17 of 26) [27/02/2003 16:23:53]

IDE

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

file:///D|/Manuales/intro/2.html (18 of 26) [27/02/2003 16:23:53]

IDE

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

file:///D|/Manuales/intro/2.html (19 of 26) [27/02/2003 16:23:53]

IDE

Pulsando F1 sobre cualquier opcin de un men se mostrar la ayuda asociada a esa opcin (figura 2.16). Figura 2.16. Ventana de ayuda mostrada al pulsar F1 estando seleccionada la opcin View | Project Manager

file:///D|/Manuales/intro/2.html (20 of 26) [27/02/2003 16:23:53]

IDE

C++ Builder proporciona algunas facilidades muy tiles a la hora de escribir cdigo. Las ms importantes son:q

Completar cdigo. Al escribir el nombre de una clase seguido del operador de acceso punto (.) o el nombre de un puntero que referencia a un objeto seguido del operador de acceso flecha (->) se muestra la lista de propiedades, mtodos y eventos asociados a esa clase (figura 2.17).

Figura 2.17. Ayuda para completar cdigo: Propiedades, mtodos y eventos asociados a la clase TApplication.

file:///D|/Manuales/intro/2.html (21 of 26) [27/02/2003 16:23:53]

IDE

q

Patrones de cdigo. Al pulsar Ctrl+J se muestran los patrones de cdigo (tambin llamados "esqueletos") que pueden insertarse en el cdigo de nuestro programa. Pueden crearse y guardarse nuevos patrones.

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

2.4. Compilacin, ejecucin y depuracin de programas.El objetivo final es la creacin 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 mens Project y Run (figura 2.18). Figura 2.18. Submens Project y Run del men principal.

file:///D|/Manuales/intro/2.html (22 of 26) [27/02/2003 16:23:53]

IDE

Project

Run

En la compilacin se trata de la obtencin del programa ejecutable (extensin .EXE). Las operaciones asociadas a este objetivo se encuentran en el men que se despliega al seleccionar la opcin Project del men principal (figura 2.18), y las ms importantes son:q q

Compile Unit. Compila el modulo fuente activo (extensin .CPP) generando un fichero objeto (extensin .OBJ). Make. Genera el fichero ejecutable a partir de los ficheros objeto asociados al proyecto recompilando nicamente los mdulos fuente que se

q

hayan modificado desde la ltima vez que se compilaron. Build. Genera el fichero ejecutable a partir de los ficheros objeto asociados al proyecto recompilando todos los mdulos fuente, aunque no se hayan modificado desde la ltima vez que se compilaron.

Si durante la compilacin se detectaran errores, se mostraran en el editor de cdigo y se puede acceder directamente a las lneas de cdigo en las que se han detectado para facilitar su correccin. Para ejecutar el programa basta con pinchar sobre el botn correspondiente de la barra de herramientas o seleccionar la opcin Run | Run. C++ Builder proporciona facilidades para la depuracin de programas, seleccionables al desplegar el men Run (figura 2.18). Las ms importantes son:q

Step Over F8. Ejecuta instruccin a instruccin el programa, pero ejecuta las llamadas a funciones como una instruccin ms, sin mostrar la

ejecucin de las instrucciones de las funciones.

file:///D|/Manuales/intro/2.html (23 of 26) [27/02/2003 16:23:53]

IDE

q q

Trace Into F7. Ejecuta instruccin a instruccin el programa, incluidas las instrucciones de las funciones llamadas. Run to Cursor F4. Ejecuta desde el principio del programa hasta la lnea en la que est situada el cursor.

Para que la depuracin sea ms completa y verstil se incorporan las siguientes opciones en el mismo men:q q q

Evaluate/Modify Ctrl+F7. Evaluar expresiones que involucren a las variables y modificar los valores de las variables. Add Watch Ctrl+F5. Visualizar el contenido de una variable permanentemente. Add Breakpoint. Aade un punto de ruptura en la lnea en la que est situado el cursor. de modo que cuando se ejecute el programa se

detendr su ejecucin al llegar al siguiente punto de ruptura.

2.5. El almacn de objetosSe accede al almacn seleccionando File | New. Contiene formularios, cuadros de dilogo, mdulos de datos, asistentes, DLLs, etc. que podemos utilizar para simplificar el desarrollo de aplicaciones. Todos ellos estn prediseados y pueden servirnos como punto de partida para nuestros propios diseos. Adems se pueden incorporar nuevos elementos que nosotros desarrollemos, consiguiendo de esta forma reutilizar nuestros diseos. Figura 2.19. El almacn de objetos.

file:///D|/Manuales/intro/2.html (24 of 26) [27/02/2003 16:23:53]

IDE

En este curso utilizaremos con frecuencia el almacn para crear nuevos proyectos (File | New | Application), para crear aplicaciones de consola (File | New | Console Wizard), para aadir nuevos formularios (File | New | Form) o ficheros de cdigo (File | New | Unit), para crear mdulos de datos (File | New | Data Module), etc.

2.6. Ejercicios

Ejemplos de aplicaciones simples y de consola.

file:///D|/Manuales/intro/2.html (25 of 26) [27/02/2003 16:23:53]

IDE

Pgina principal Francisco Cortijo Bon

file:///D|/Manuales/intro/2.html (26 of 26) [27/02/2003 16:23:53]

Mens

Curso de C++ Builder Lista completa de mensSobre el men principal y sus submens...

File

file:///D|/Manuales/appendix/menu/index.html (1 of 4) [27/02/2003 16:23:53]

Mens

Edit

Search

View

file:///D|/Manuales/appendix/menu/index.html (2 of 4) [27/02/2003 16:23:53]

Mens

Project

Run

Component

file:///D|/Manuales/appendix/menu/index.html (3 of 4) [27/02/2003 16:23:53]

Mens

Database

Tools

Workgroups

Help

Atrs Francisco Cortijo Bon

file:///D|/Manuales/appendix/menu/index.html (4 of 4) [27/02/2003 16:23:53]

Componentes

Curso de C++ Builder Componentes

q q q

3.1. Pginas de componentes. 3.2. Propiedades, mtodos y gestores de eventos. 3.3. Componentes visuales y no visuales.

Los componentes son unos elementos genricos con una funcionalidad muy concreta, cuya nica finalidad es la reutilizacin. Cada uno de ellos est destinado a realizar una tarea tpica en una aplicacin. Un componente de la VCL es una clase que caracteriza a un control de Windows agregando propiedades, mtodos y gestores de eventos a cada control. La filosofa de los componentes en C++ Builder es exactamente la misma que en Visual Basic. Esto es tanto as que algunos componentes pueden utilizarse en ambos entornos (los componentes ActiveX).

3.1. Pginas de componentesComo ya hemos comentado anteriormente los componentes se agrupan en la paleta de componentes en distintas pginas, a saber:q

q

q q

q q

Standard: Incluye los componentes comunes y ms habituales de los programas Windows. Additional: Los componentes de esta pgina son controles especializados. propios de C++ Builder. Win32: Componentes de cuadros de dilogo propios de Windows 95/NT. System: Esta pgina incluye controles muy especializados para interaccin con el sistema. Internet: Componentes para distintos protocolos de acceso a Internet. Data Access y Data Controls: Componentes especializados para acceso a bases

file:///D|/Manuales/intro/3.html (1 of 5) [27/02/2003 16:23:54]

Componentes

q

q

q q

q

q

q

de datos. Midas: Esta pgina incluye componentes que permiten el desarrollo de aplicaciones multicapa con MIDAS. Decision Cube: Incluye componentes para realizar anlisis multidimensionales de datos con objeto de tomar decisiones. QReport: Componentes para disear rpidamente informes y resmenes. Dialogs: Contiene cuadros de dilogo comunes en aplicaciones Windows listos para usar. Win 3.1: Componentes propios de Windows 3.1, la mayora de ellos se mantienen en C++ Builder slo por compatibilidad con versiones anteriores. Samples: Componentes de demostracin (cmo hacer componentes personalizados). Active X: Los componentes de esta pgina son objetos Active X, creados por otros desarrolladores puede que utilizando otros lenguajes de programacin.

Para ms detalles, consultar la lista completa de componentes, agrupados por pginas.

3.2. Propiedades, mtodos y gestores de eventosDe un componente podemos destacar tres aspectos: sus propiedades, los mtodos que puede ejecutar y los eventos a los que puede responder.

Propiedades.Las propiedades son los elementos del componente que configuran su aspecto y controlan su comportamiento. Muchos componentes tienen propiedades en comn. Por ejemplo, todos los componentes visuales tienen las propiedades Top y Left que controlan la posicin del componente en el formulario, tanto en tiempo de diseo como en tiempo de ejecucin. Hemos visto como pueden establecerse y modificarse las propiedades de los componentes en tiempo de diseo utilizando el inspector de objetos. Las propiedades tienen, normalmente, un mtodo de acceso asociado que se ejecuta al modificar la propiedad en tiempo de ejecucin. Para modificar una propiedadfile:///D|/Manuales/intro/3.html (2 of 5) [27/02/2003 16:23:54]

Componentes

basta (generalmente) con asignarle el nuevo valor. Al realizar un cambio, la VCL invoca el mtodo de acceso a la propiedad. En el caso concreto de la propiedad Left, la VCL dibuja de nuevo todo el formulario en la nueva ubicacin. A modo de resumen, las propiedades tienen dos especificadores de acceso que se emplean al consultar o modificar el valor de una propiedad en tiempo de ejecucin. En definitiva, hay un especificador de lectura y un especificador de escritura. Los especificadores de acceso asocian mtodos de lectura o de escritura (funciones, en definitiva) con las propiedades. Al consultar o modificar el valor de una propiedad se invocan, automticamente, las funciones respectivas asociadas:

r

Al asignar un nuevo valor a una propiedad se est accediendo al especificador de escritura. La VCL comprueba si existe un mtodo de acceso asociado al especificador de escritura y si es as, lo ejecuta. Si no existe, simplemente asigna el nuevo valor a la propiedad. Al consultar el valor de una propiedad se est accediendo al especificador de lectura. En la mayora de los casos el especificador de lectura no hace ms que devolver el valor de la propiedad.

r

EJERCICIO 4: Modificacin y consulta de propiedades en tiempo de ejecucin.

Mtodos.Los mtodos son funciones asociadas al componente que pueden invocarse para que el componente realice distintas acciones. Por ejemplo, todos los componentes visuales tienen un mtodo llamado Show() para mostralos y otro llamado Hide() para ocultarlos. En el ejemplo 3 invocamos al mtodo Terminate() asociado a la aplicacin que se estabafile:///D|/Manuales/intro/3.html (3 of 5) [27/02/2003 16:23:54]

Componentes

ejecutando (Objeto Application) para terminar su ejecucin como respuesta a la pulsacin del botn. En C++ los mtodos son miembros de una clase, al igual que las propiedades.

EJERCICIO 5: Mtodos asociados a componentes.

Eventos.Un evento es cualquier suceso que puede ocurrirle a un componente (movimiento del ratn, pulsacin de algn botn del ratn, pulsacin de una tecla del teclado, desplazamiento o redimensionamiento de una ventana, etc.) que pueden condicionar el comportamiento y apariencia del programa. Cada componente poseer una serie de eventos que puede recibir o generar. Se pueden tratar los eventos de un componente que necesitemos, y dejar que los dems sean tratados por defecto. Cuando se responde a un evento se dice que se est manipulando el evento. Los eventos se manejan mediante los gestores o manipuladores de eventos. La forma de tratar un evento asociado a un componente en C++ Builder es sencilla: se activa el componente que va a responder al evento y utilizando el Inspector de Objetos (pestaa Events) se selecciona el evento al que debe responder y, cuando se active el editor de cdigo, se escribe el cdigo asociado al gestor del evento. Se dice que Windows est orientado a eventos. Esto significa que cualquier programa est condicionado por lo eventos que ocurren en el entorno Windows. Un programa Windows est continuamente sondeando al sistema ante la ocurrencia de cualquier evento y de ocurrir, Windows avisa al programa envindole un mensaje. Un programa Windows est ocioso la mayor parte del tiempo esperando a que ocurra algn evento.

file:///D|/Manuales/intro/3.html (4 of 5) [27/02/2003 16:23:54]

Componentes

EJERCICIO 6: Gestores de eventos.

3.3. Componentes visuales y no visualesSe pueden establecer muchas clasificaciones para los componentes. Una de ellas es la de visuales o controles, frente a no visuales. Un componente es visual cuando tiene una representacin grfica en tiempo de diseo y ejecucin (botones, barras de scroll, cuadros de edicin, etc.), y se dice no visual en caso contrario (temporizadores, cuadros de dilogo -no visibles en la fase de dieo-, etc). Por lo dems no existen ms diferencias entre ellos, excepto, claro est, las derivadas de la visualizacin del componente. Los componentes no visuales se pueden colocar en los formularios de la misma manera que los controles, aunque en este caso su posicin es irrelevante.

Pgina principal Francisco Cortijo Bon

file:///D|/Manuales/intro/3.html (5 of 5) [27/02/2003 16:23:54]

Paleta de componentes - Standard

Curso de C++ Builder La paleta de componentes

Pgina StandardIconos de los componentes agrupados en la pgina Standard

Esta pgina incluye los componentes comunes y ms habituales de los programas Windows:

Crea una barra de men (que acta como men principal). Para aadir opciones al men y a los submens, aadir el componente MainMenu al formulario y hacer doble click sobre l para acceder al diseador de mens. Crea mens desplegables (tambin llamados mens contextuales) que aparecen cuando se pincha con el botn PopupMenu derecho del ratn. Para configurar el men desplegable, proceder como con el componente MainMenu. Muestra texto que el usuario no puede seleccionar ni manipular. Se usa para mostrar textos de ttulo, Label encabezamientos, o incluso para mostrar resultados, ya que puede establecerse su valor (propiedad Caption) en tiempo de ejecucin. MainMenu Edit Memo Muestra un rea de edicin de texto en la que el usuario puede introducir y modificar una nica lnea de texto. Muestra un rea de edicin de texto en la que el usuario puede introducir y modificar mltiples lneas de texto.

file:///D|/Manuales/appendix/components/Standard.html (1 of 2) [27/02/2003 16:23:55]

Paleta de componentes - Standard

Button

Crea un botn que el usuario puede pulsar para efectuar acciones.

Presenta una opcin binaria (Si/No - Verdad/Falso) de manera que cuando se selecciona este control, se permuta entre ambos valores. Este control puede emplearse para crear un grupo de estos controles que representen elecciones que no CheckBox sean mutuamente exclusivas (al contrario que los RadioButton, por lo que el usuario puede seleccionar ms de una opcin en un grupo. Presenta una opcin binaria (Si/No - Verdad/Falso) de manera que cuando se selecciona este control, se permuta entre RadioButton ambos valores. Este control puede emplearse para crear un grupo de estos controles que representen elecciones mutuamente exclusivas (al contrario que los CheckBox, por lo que el usuario puede seleccionar slo una en un grupo. ListBox ComboBox ScrollBar GroupBox Muestra una lista de eleciones que est acompaada de una barra de scroll. Muestra una lista de eleciones. Es un control que combina aspectos de un componente ListBox y de un componente Edit: el usuario puede introducir datos en el rea de edicin o seleccionar en el rea de lista. Prociona una forma cmoda de modificar el rea visible de un formulario o de una lista. Tambin puede usarse para "desplazarse" en un rango -amplio- de valores por incrementos prefijados. Contenedor para agrupar opciones relacionadas en un formulario.

RadioGroup Contenedor que crea un grupo de componentes RadioButton en un formulario. Panel ActionList Contenedor que puede contener otros componentes en un formulario. Se usa para crear barras de herramientas y lneas de estado. Los componentes que contiene estn asociados al panel. Crea grupos de acciones que centralizan las respuestas de la plicacin ante las acciones del usuario.

file:///D|/Manuales/appendix/components/Standard.html (2 of 2) [27/02/2003 16:23:55]

Paleta de componentes - Additional

Curso de C++ Builder La paleta de componentes

Pgina AdditionalIconos de los componentes agrupados en la pgina Additional

Los componentes de esta pgina son controles especializados:

BitBtn SpeedButton MaskEdit StringGrid DrawGrid

Crea un botn que puede contener un grfico (tipo "bitmap"). Crea un botn que puede contener un grfico pero no contiene texto. Estos botones se agrupan, normalmente, dentro de un panel para crear una barra de herramientas. Permite la introduccin y edicin de datos, como lo hace el componente Edit, salvo que proporciona la posibilidad de especificar formatos particulares, como cdigos postales o nmeros de telfono. Crea una rejilla que puede usarse para mostrar cadenas en filas y columnas. Crea una rejilla que puede usarse para mostrar datos en filas y columnas.

file:///D|/Manuales/appendix/components/Additional.html (1 of 2) [27/02/2003 16:23:55]

Paleta de componentes - Additional

Image Shape Bevel ScrollBox CheckListBox Splitter StaticText ControlBar Chart

Muestra un "bitmap" o un icono. Dibuja figuras geomtricas, como elipses, crculos, rectngulos, cuadrados o rectngulos y cuadrados con bordes redondeados. Crea lneas o cuadros con apariencia tridimensional y como si estuviera esculpida (alto o bajorrelieve). Crea un contenedor redimensionable que muestra barras de scroll cuando sea necesario. Muestra una lista de eleciones que est acompaada de una barra de scroll. Es muy parecido al componente ListBox salvo que cada elemento de la lista tiene asociado un CheckBox. Aade un divisor a un formulario entre dos componentes alineados que permite al usuario redimensionar los controles en tiempo de ejecucin pinchando y arrastrando la lnea de divisin. Es un componente de texto no editable, como el componente Label, slo que StaticText tiene su propio gestor de ventana. Un gestor para acompaar a barras de herramientas que se usa para poder mover este tipo de barras. Un visualizador equivalene a TTable.

file:///D|/Manuales/appendix/components/Additional.html (2 of 2) [27/02/2003 16:23:55]

Paleta de componentes - Win32

Curso de C++ Builder La paleta de componentes

Pgina Win32Iconos de los componentes agrupados en la pgina Win32

Esta pgina incluye componentes comunes de aplicaciones para 32 bits.

TabControl PageControl ImageList

Divisor de pginas mutuamente exclusivas accesibles por pestaas. Se emplea para construir cuadros de dilodo con mltiples pginas dentro de la misma ventana. Una lista de imgenes es una coleccin de imgenes del mismo tamao accesibles mediante un ndice. Se emplea para gestionar eficientemente grandes conjuntos de imgenes o "bitmaps". Paracrear una lista de imgenes, aadir un componente ImageList al formulario y hacer doble click sobre l para acceder al editor de listas de imgenes. Es una especializacin del componente Memo: proporciona la posibilidad de 1) modificar propiedades acrerca de la fuente de letra (familia, tamao, color, negrita o itlica), 2) modificar propiedades de formato (alineamiento, tabulaciones, indentacin o numeracin), y 3) marcacin de texto y arrastre del mismo. Es una barra que muestra un rango y un indicador que muestra el valor actual y que permite modificarlo.

RichEdit TrackBar

file:///D|/Manuales/appendix/components/Win32.html (1 of 2) [27/02/2003 16:23:56]

Paleta de componentes - Win32

ProgressBar UpDown HotKey Animate

Es una barra rectangular que se va "llenando" de izquierda a derecha. Se emplea para mostrar cmo progresa una operacin. Son botones para incrementar y decrementar valores. Asigna una combinacin de teclas a cualquier componente.

Una ventana que se emplea para mostrar ficheros AVI (Audio Video Interleaved) o series de "bitmaps" dispuestos en secuencia, como una pelcula. Muestra una lista de elecciones que est acompaada de una barra de scroll para seleccionar fechas. La fecha DateTimePicker puede seleccionarse desde el calendario o empleando la barra de scroll o las flechas. MonthCalendar Muestra un calendario que representa un solo mes. TreeView ListView HeaderControl StatusBar ToolBar CoolBar PageScroller Muestra un conjunto de objetos estructurados jerrquicamente. Permite ver una lista en columnas. Muestra un encabezamiento sobre columnas de texto o nmeros. Este control puede dividirse en varias partes para proporcionar cabeceras para mltiples columnas. rea para indicar el estado de acciones o textos de pista amplios ("Hints") en la parte baja de la ventana. Gestiona botones rpidos y otros controles, colocndolos adecuadamente ajustando su posicin y tamao. Muestra una coleccin de controles "CoolBand" dentro de bandas que pueden moverse y redimensionarse. Contiene objetos dentro del rea de cliente que pueden desplazarse horizontal o verticalmente sin usar una barra de scroll sino empleando las flechas.

file:///D|/Manuales/appendix/components/Win32.html (2 of 2) [27/02/2003 16:23:56]

Paleta de componentes - System

Curso de C++ Builder La paleta de componentes

Pgina SystemIconos de los componentes agrupados en la pgina System

Esta pgina incluye controles muy especializados:

Timer PaintBox MediaPlayer OleContainer

Es un componente no visual que acta como temporizador. Se emplea para ejecutar una serie de instrucciones (mediante el gestor del evento OnTimer) que deben ejecutarse cuando se alcanza el valor especificado como intervalo (propiedad Interval). Especifica un rea rectangular sobre un formulario que delimita la zona en la que puede dibujarse desde una aplicacin. Muestra una ventana con botones (similares a los de cualquier reproductor de audio o video) para reproducir video o sonido. Crea un rea de cliente OLE (Object Linking and Embedding) en un formulario.

DdeClientConv Establece una conexin cliente a una aplicacin servidora DDE (Dynamic Data Exchange).

file:///D|/Manuales/appendix/components/System.html (1 of 2) [27/02/2003 16:23:56]

Paleta de componentes - System

DdeClientItem Especifica los datos del cliente DDE (Dynamic Data Exchange) que se transfieren en una conversacin DDE. DdeServerConv Establece una conexin servidora a una aplicacin cliente DDE (Dynamic Data Exchange). DdeServerItem Especifica los datos del servidor DDE (Dynamic Data Exchange) que se transfieren en una conversacin DDE.

file:///D|/Manuales/appendix/components/System.html (2 of 2) [27/02/2003 16:23:56]

Paleta de componentes - Internet

Curso de C++ Builder La paleta de componentes

Pgina InternetIconos de los componentes agrupados en la pgina Internet

Los componentes de esta pgina ofrecen diferentes protocolos de acceso a Internet:

Add to a form or data module to turn an application into a TCP/IP client. ClientSocket specifies a desired connection to a TCP/IP server, manages the open connection, and terminates the completed connection. Add to a form or data module to turn an application into a TCP/IP server. ServerSocket listens for requests for TCP/IP ServerSocket connections from other machines and establishes connections when requests are received. Converts an ordinary data module to a Web module and enables the Web server application to respond to HTTP request WebDispatcher messages. Converts an HTML template into a string of HTML commands that can be interpreted by a client application such as a PageProducer Web browser. The commands and HTML-transparent tags are replaced with customized content by the OnHTMLTag event. Assembles a sequence of HTML commands to generate a tabular display of the records from a TQuery object, which QueryTableProducer obtains its parameters from an HTTP request message. Assembles a sequence of HTML commands to generate a tabular display of the records from a TDataSet object. This DataSetTableProducer allows an application to create images of a dataset for an HTTP response message. ClientSocketfile:///D|/Manuales/appendix/components/Internet.html (1 of 2) [27/02/2003 16:23:57]

Paleta de componentes - Internet

DataSetPageProducer NMDayTime NMEcho NMFinger NMFTP NMHTTP NMMsg NMMsgServ NMNNTP NMPOP3 NMUUProcessor NMSMTP NMStrm NMStrmServ NMTime NMUDP PowerSock NMGeneralServer HTML NMURL

Converts an HTML template that contains field references into a string of HTML commands that can be interpreted by a client application such as a Web browser. Special HTML-transparent tags are replaced with field values. Gets the date and time from an internet/intranet daytime server. Sends text to an internet echo server, and echoes it back to you. Gets information about a user from an internet finger server, using the Finger protocol described in RFC 1288. Implements file transfer protocol. Invisible ActiveX control provides easy access for Internet File Transfer Protocol (FTP) services for transferring files and data between a remote and local machine. Invisible ActiveX control implements the HTTP Protocol Client, allowing users to directly retrieve HTTP documents if no browsing or image processing is necessary. Sends simple ASCII text messages across the internet or intranet using TCP/IP protocol. Receives messages sent with the TNMMsg component. Invisible ActiveX Client Control allows applications to access Networking News Transfer Protocol (NNTP) news servers. It provides news reading and posting capabilities. Invisible ActiveX control that retrieves mail from UNIX or other servers supporting POP3 protocol. MIME encodes or UUEncodes files and decodes MIME-encoded or UUEncoded files. ActiveX control that gives applications access to SMTP mail servers and mail posting capabilities. Sends streams to a stream server across the internet or an intranet. Receives streams sent with the TNMStrm component. Gets the date and time from Internet time servers, as described in RFC 868. Invisible WinSock ActiveX Control provides easy access to User Datagram Protocol (UDP) network services. It implements WinSock for both client and server and represents a communication point utilizing UDP network services. It can also be used to send and retrieve UDP data. Serves as a base for creating controls for dealing with other protocols, or for creating custom protocols. Serves as a base class for developing multi-threaded internet servers, such as custom servers or servers that support RFC standards. Invisible ActiveX control implements an HTML viewer, with or without automatic network retrieval of HTML documents, and provides parsing and layout of HTML data, as well as a scrollable view of the selected HTML page. The HTML component can also be used as a nonvisual HTML parser to analyze or process HTML documents. Decodes URL data into a readable string, and encodes standard strings into URL data format.

file:///D|/Manuales/appendix/components/Internet.html (2 of 2) [27/02/2003 16:23:57]

Paleta de componentes - Data Access

Curso de C++ Builder La paleta de componentes

Pgina Data AccessIconos de los componentes agrupados en la pgina Data Access

Esta pgina incluye componentes especialzados para acceso a bases de datos:

DataSource Acts as a conduit between a dataset component such as TTable and data-aware components such as TDBGrid. Retrieves data from a physical database table via the BDE and supplies it to one or more data-aware components through a Table DataSource component. Conversely, it also sends data received from a component to a physical database via the BDE. Uses SQL statements to retrieve data from a physical database table via the BDE and supplies it to one or more data-aware Query components through a TDataSource component. Conversely, uses SQL statements to send data from a component to a physical database via the BDE. Enables an application to access server stored procedures. Sends data received from a component to a physical database via StoredProc the BDE. Database Sets up a persistent connection to a database, especially a remote database requiring a user login and password.

file:///D|/Manuales/appendix/components/Data_Access.html (1 of 2) [27/02/2003 16:23:58]

Paleta de componentes - Data Access

Provides global control over a group of Database components. A default TSession component is automatically created for each C++Builder database application. You must use the TSession component only if you are creating a multithreaded database application. Each database thread requires its own session component. BatchMove Copies a table structure or its data. Can be used to move entire tables from one database format to another. Lets you use cached updates support with read-only datasets. For example, you could use a TUpdateSQL component with a "canned" query to provide a way to update the underlying datasets, essentially giving you the ability to post updates to a UpdateSQL read-only dataset. You associate a TUpdateSQL component with a dataset by setting the dataset's UpdateObject property. The dataset automatically uses the TUpdateSQL component when cached updates are applied. NestedTable Retrieves the data in a nested dataset field and supplies it to data-aware controls through a datasource component. Session

file:///D|/Manuales/appendix/components/Data_Access.html (2 of 2) [27/02/2003 16:23:58]

Paleta de componentes - Data Controls

Curso de C++ Builder La paleta de componentes

Pgina Data ControlsIconos de los componentes agrupados en la pgina Data Controls

Esta pgina incluye componentes especialzados para gestin de bases de datos:

DBGrid

DBNavigator DBText DBEdit DBMemo DBImage DBListBox DBComboBox

Data-aware custom grid that enables viewing and editing data in a tabular form similar to a spreadsheet. Makes extensive use of TField properties (set in the Fields editor) to determine a column's visibility, display format, ordering, and so on. Data-aware navigation buttons that move a table's current record pointer forward or backward. The navigator can also place a table in Insert, Edit, or Browse state, post new or modified records, and retrieve updated data to refresh the display. Data-aware label that displays a field value in the current record. Data-aware edit box that displays or edits a field in the current record. Data-aware memo box that displays or edits BLOB text in the current record. Data-aware image box that displays, cuts, or pastes bitmapped BLOB images to and from the current record. Data-aware list box that displays a scrolling list of values from a column in a table. Data-aware combo box that displays or edits a scrolling list of values from a column in a table.

file:///D|/Manuales/appendix/components/Data_Controls.html (1 of 2) [27/02/2003 16:23:58]

Paleta de componentes - Data Controls

DBCheckBox DBRadioGroup

Data-aware check box that displays or edits a Boolean data field from the current record. Data-aware group of radio buttons that display or set column values. DBLookupListBox is a data-aware list box that derives its list of display items from either a Lookup field defined for a dataset or a secondary data source, data field, and key. In either case, a user is presented with a restricted list of choices DBLookupListBox from which to set a valid field value. When a user selects a list item, the corresponding field value is changed in the underlying dataset. To specify list box items using a lookup field, the dataset to which you link the control must already define a lookup field. DBLookupComboBox is a data-aware combo box that derives its drop-down list of display items from either a lookup field defined for a dataset or a secondary data source, data field, and key. In either case, a user is presented with a DBLookupComboBox restricted list of choices from which to set a valid field value. When a user selects a list item, the corresponding field value is changed in the underlying dataset. To specify combo box list items using a lookup field, the dataset to which you link the control must already define a lookup field. DBRichEdit A multiline edit control that can display and edit a rich text memo field in a dataset. A DBCtrlGrid control displays multiple fields in multiple records in a tabular grid format. Each cell in the grid displays DBCtrlGrid multiple fields from a single record. DBChart Place the component on a form and right-click it to display the third-party developer's Help topics.

file:///D|/Manuales/appendix/components/Data_Controls.html (2 of 2) [27/02/2003 16:23:58]

Paleta de componentes - MIDAS

Curso de C++ Builder La paleta de componentes

Pgina MIDASIconos de los componentes agrupados en la pgina MIDAS

Esta pgina incluye componentes que permiten el desarrollo de aplicaciones multicapa con MIDAS:

Implements a database-independent dataset that can be used independently in a single-tiered application, or to represent data received from a server in a multi-tiered database application. See Creating and using a client dataset Establishes a DCOM connection to a remote server in a multi-tiered database application. See Connecting to the DCOMConnection application server Establishes a TCP/IP connection to a remote server in a multi-tiered database application. See Connecting to the SocketConnection application server Establishes an OLEnterprise connection to a remote server in a multi-tiered database application. See Connecting to OLEnterpriseConnection the application server Encodes data from a dataset into packets than can be sent to client applications and applies updates that are received DataSetProvider from client applications to that dataset. See Creating a data provider for the application server and Providing from and resolving to a dataset Encodes data from a dataset into packets than can be sent to client applications and applies updates that are received Provider from client applications to a dataset or database server. See Creating a data provider for the application server. ClientDataSetfile:///D|/Manuales/appendix/components/MIDAS.html (1 of 2) [27/02/2003 16:23:59]

Paleta de componentes - MIDAS

SimpleObjectBroker RemoteServer MIDASConnection

Locates a server for a connection component from a list of available application servers. See Brokering connections. (For backward compatibility only) Establishes a DCOM connection to a remote server in a multi-tiered application. (For backward compatibility only) Establishes a DCOM, TCP/IP, or OLEnterprise connection to a remote server in a multi-tiered application.

file:///D|/Manuales/appendix/components/MIDAS.html (2 of 2) [27/02/2003 16:23:59]

Paleta de componentes - Decision Cube

Curso de C++ Builder La paleta de componentes

Pgina Decision CubeIconos de los componentes agrupados en la pgina Decision Cube

Esta pgina incluye componentes para realizar anlisis multidimensionales de datos con objeto de tomar decisiones:

DecisionCube A multidimensional data store. See Using decision cubes. Specialized form of TQuery used to define the data in a decision cube. See Creating decision datasets with the Decision Query DecisionQuery editor. DecisionSource Defines the current pivot state of a decision grid or a decision graph. See Using decision sources. DecisionPivot Use to open or close decision cube dimensions or fields by pressing buttons. See Using decision pivots. DecisionGrid Displays single and multidimensional data in table form. See Creating and Using decision grids. Displays fields from a decision grid as a dynamic graph that changes when dimensions are modified. See Using decision DecisionGraph graphs.

file:///D|/Manuales/appendix/components/Decision_Cube.html [27/02/2003 16:23:59]

Paleta de componentes - QReport

Curso de C++ Builder La paleta de componentes

Pgina QReportIconos de los componentes agrupados en la pgina QReport

Esta pgina incluye componentes para disear rpidamente informes y resmenes. Se pueden incorporar cabeceras y pies de pginas, resmenes, agrupaciones con cabeceras y pies, etc. Estos informes pueden realizarse a partir de cualquier fuente de datos: TTable, TQuery, listas, matrices, etc. arrays. Puede usarse un visalizador previo para comprobar los resultados. Automticamente se realizan clculos similares a como se hacen en una hoja de clculo.

QuickRep QRSubDetail QRStringsBand QRBand QRChildBand

The basic report form on which you build all your reports. It is a visual component that takes the shape of the currently selected paper size. Create reports by dropping bands and printable components on the TQuickRep component and connecting it to a dataset. Links additional datasets into a report. Typically you would set up a master/detail relationship between table or query components and create a similar relationship with TQRSubDetail components. Drops bands containing strings onto a report. Drop bands on a TQuickRep component and set the BandType property to tell how the band will behave during report generation. If you have bands with expanding components and want other components to be moved down accordingly you can create a child band and put the moving components on it. It's also useful if you have very long bands that span multiple pages.

file:///D|/Manuales/appendix/components/QReport.html (1 of 2) [27/02/2003 16:24:00]

Paleta de componentes - QReport

QRGroup

Allows you to group bands together and provides control for headers, footers, and page breaks. Prints static or other non-database text. Enter the text to be displayed in the Caption property. You can split text on QRLabel multiple lines and even multiple pages. A data-aware version of the TQRLabel that prints the value of a database field. Calculated fields and text field types can be printed, including String fields, various numeric fields, date fields and memo fields. Text can span multiple lines and QRDBText pages. You connect the component to the data field by setting the DataSource and DataField properties. Unlike regular data-aware components, TQRDBText works even with dataset controls disabled to improve speed. QRExpr Prints database fields, calculations, and static text. Input a valid QuickReport expression in the Expression property. Prints system information such as report title, current page number, and so on. Select the data to print in the Data QRSysData property. Set any preceding text in the Text property. Prints a large amount of text that does not come from a database field. It can be static text or you can change it during QRMemo report generation. You can set the field to expand vertically as needed and then span multiple pages if necessary. QRExprMemo Allows you to programmatically generate contents using Quick Report expressions. QRRichText Allows you to embed rich text into your report. QRDBRichText Provides a Quick Report wrapper for accessing DBRichText fields in your reports. QRShape Draws simple shapes like rectangles, circles, and lines on a report. QRImage Displays a picture on a report. Supports all image formats supported by the TPicture class. QRDBImage Prints images stored in binary (BLOB) fields. Prints all graphics formats supported by C++Builder. QRCompositeReport Allows you to combine more than one report together. QRPreview Brings up a form that allows you to preview a report on the screen and print it. QRTextFilter Lets you export the contents of your report into text format. QRCSVFilter Lets you export the contents of your report into a comma-delimited database source file. QRHTMLFilter Lets you export the contents of your report into HTML. QRChart Allows you to take a TChart component and drop it onto your Quick Report form.

file:///D|/Manuales/appendix/components/QReport.html (2 of 2) [27/02/2003 16:24:00]

Paleta de componentes - Dialogs

Curso de C++ Builder La paleta de componentes

Pgina DialogsIconos de los componentes agrupados en la pgina Dialogs

Esta pgina incluye las diferentes ventanas de dilogo comunes en aplicaciones Windows. Estas ventanas de dilogo proporcionan un interface consistente para realizar operaciones sobre ficheros como abrir, guardar e imprimir. Una ventana de dilogo se abre al llamar al mtodo Execute(). Este mtodo devuelve un valor lgico: true si el usuario elige OK en la ventana de dilogo, false si el usuario elige Cancel o sale de la ventana de dilogo sin salvar los cambios. Cada ventana de dilogo (excepto la asociada al componente PrinterSetup) tiene la propiedad Options que afecta a su apariencia y comportamiento. Una ventana de dilogo puede cerrarse desde un programa mediante el mtodo CloseDialog(). Para modificar en tiempo de ejecucin su posicin, usar las propiedades Handle, Left, Top y Position.

file:///D|/Manuales/appendix/components/Dialogs.html (1 of 2) [27/02/2003 16:24:00]

Paleta de componentes - Dialogs

OpenDialog SaveDialog OpenPictureDialog

Muestra una ventana de dilogo comn de Windows para seleccionar y abrir ficheros. Muestra una ventana de dilogo comn de Windows para seleccionar y guardar ficheros.

Muestra una ventana de dilogo modal comn de Windows para seleccionar y abrir ficheros grphicos. Es idntica a la ventana asociada a OpenDialog salvo que contiene una regin para previsualizacin de imgenes. Muestra una ventana de dilogo modal comn de Windows para seleccionar y guardar ficheros grphicos. Es idntica SavePictureDialog a la ventana asociada a SaveDialog salvo que contiene una regin para previsualizacin de imgenes. FontDialog ColorDialog PrintDialog Muestra una ventana de dilogo comn de Windows para especificar la familia, tamao y estilo de letra. Muestra una ventana de dilogo comn de Windows para especificar color. Muestra una ventana de dilogo comn de Windows para especificar informacin de impresin.

PrinterSetupDialog Muestra una ventana de dilogo comn de Windows para configurar impresoras. FindDialog ReplaceDialog Muestra una ventana de dilogo comn de Windows para especificar la cadena a buscar. Muestra una ventana de dilogo comn de Windows para especificar la cadena a buscar y la cadena por la que se va a reemplazar.

file:///D|/Manuales/appendix/components/Dialogs.html (2 of 2) [27/02/2003 16:24:00]

Paleta de componentes - Win 3.1

Curso de C++ Builder La paleta de componentes

Pgina Win 3.1Iconos de los componentes agrupados en la pgina Win 3.1

Esta pgina incluye controles propios de Windows 3.1 para permitir compatibilidad con aplicaciones antiguas. Muchos de estos controles tienen su versin actualizada en componentes incluidos en la pgina Win32. Estos controles no deberan usarse al desarrollar nuevas aplicaciones. En la siguiente tabla se indica qu control debera usarse en su lugar: Control Win 3.1 Sustituir por TabSet Outline NoteBook Header TabControl TreeView PageControl HeaderControl Pgina Win32 Win32 Win32 Win32 Win32

DBLookupCombo DBLookupComboBox Data Controls

TabbedNoteBook PageControl

file:///D|/Manuales/appendix/components/Win_3.1.html (1 of 2) [27/02/2003 16:24:01]

Paleta de componentes - Win 3.1

DBLookupList Data-aware list box that displays values looked up from columns in another table at runtime. DBLookupCombo Data-aware combo box that displays values looked up from columns in another table at runtime. Creates notebook-like tabs. You can use the TabSet component with the Notebook component to enable users to change TabSet pages. Outline Displays information in a variety of outline formats. Creates a component that contains multiple pages, each with its own set of controls. Users select a page by clicking the tab TabbedNotebook at the top of the page Notebook Creates a component that can contain multiple pages. Used with the Notebook component, it enables users to change pages. Creates a sectioned region for displaying data. Users can resize each section of the region to display different amounts of Header data. FileListBox Displays a scrolling list of files in the current directory. DirectoryListBox Displays the directory structure of the current drive. Users can change directories in a directory list box. DriveComboBox Displays a scrolling list of available drives. FilterComboBox Specifies a filter or mask to display a restricted set of files.

file:///D|/Manuales/appendix/components/Win_3.1.html (2 of 2) [27/02/2003 16:24:01]

Paleta de componentes - Samples

Curso de C++ Builder La paleta de componentes

Pgina SamplesIconos de los componentes agrupados en la pgina Samples

Esta pgina incluye ejemplos de componentes personalizados que pueden construirse e incorporarse a la paleta de componentes. El cdigo fuente est disponible en el directorio \EXAMPLES\CONTROLS\SOURCE de la instalacin.

Pie Performance Graph CSpinButton CSpinEdit CGauge CDirectoryOutline CColorGrid CCalendar IBEVentAlerter

file:///D|/Manuales/appendix/components/Samples.html [27/02/2003 16:24:01]

Paleta de componentes - ActiveX

Curso de C++ Builder La paleta de componentes

Pgina Active XIconos de los componentes agrupados en la pgina Active X

Los componentes de esta pgina son objetos ActiveX. Son aplicaciones completas y portables creadas por otros desarrolladores.

Lets you create highly customized charts. Choose Properties to display a tabbed control panel that lets you define the values, appearance, and end-user functionality of the chart component. VSSpell Visual Speller, lets you customize a spelling checker. F1Book Formula One, lets you design a spreadsheet with its full-featured Designer. VtChart Lets you create true 3D charts. Graph Pinnacle Graph, lets you create 2D graphs. Chartfx

file:///D|/Manuales/appendix/components/ActiveX.html [27/02/2003 16:24:02]

Paleta de componentes

Curso de C++ Builder La paleta de componentes

La paleta de componentes se estructura, por defecto, en 14 pginas. En la siguiente tabla agrupamos las pginas segn nuestra conveniencia, siguiendo el criterio de utilidad en este curso. Las pginas cuyo ttulo est precedido por el smbolo espaol. estn traducidas al

Standard Additional Win32 System Dialogs Data Access Data Controls QReport Decision Cube Internet MIDAS ActiveX Samples Win 3.1

file:///D|/Manuales/appendix/components/index.html [27/02/2003 16:24:02]

Ejercicio 4. Modificacin y consulta de propiedades en tiempo de ejecucin

Curso de C++ Builder Ejercicio 4. Modificacin y consulta de propiedades en tiempo de ejecucin

Sobre el formulario que estamos empleando, observar que su ttulo qued fijado a Form de Prueba despus de modificar la propiedad Caption del formulario. Para modificar su valor en tiempo de ejecucin haremos que, por ejemplo, el ttulo se establezca en el momento de la creacin de la ventana. Para ello escribiremos un gestor para el evento OnCreate asociado al componente MainForm. Recordar que basta con hacer doble click en OnCreate (pestaa Events del inspector de objetos) del componente MainForm. Escribiremos el siguiente fragmento de cdigo://-----------------------------------------------------------void __fastcall TMainForm::FormCreate(TObject *Sender) { MainForm->Caption = "Primer programa con C++ Builder"; } //------------------------------------------------------------

A continuacin, modificaremos el color del formulario (propiedad Color) siempre que el valor de esta propiedad est establecido al valor por defecto (clBtnFace)://-----------------------------------------------------------void __fastcall TMainForm::FormCreate(TObject *Sender) { MainForm->Caption = "Primer programa con C++ Builder"; if (MainForm->Color == clBtnFace) MainForm->Color = clWhite; } // Lectura // Escritura

file:///D|/Manuales/intro/ejemplos/ej4.html (1 of 3) [27/02/2003 16:24:02]

Ejercicio 4. Modificacin y consulta de propiedades en tiempo de ejecucin

//------------------------------------------------------------

Finalmente, estableceremos que cuando empiece la ejecucin del programa se encuentre desactivado el CheckBox://-----------------------------------------------------------void __fastcall TMainForm::FormCreate(TObject *Sender) { MainForm->Caption = "Primer programa con C++ Builder"; if (MainForm->Color == clBtnFace) MainForm->Color = clWhite; CheckBox->Checked = false; } //-----------------------------------------------------------// Lectura // Escritura

// Escritura

Si generamos el ejecutable y ejcutamos el programa, el resultado es el mostrado en la figura E4.1. Figura E4.1. El programa al iniciar su ejecucin despus de modificar propiedades en tiempo de ejecucin.

file:///D|/Manuales/intro/ejemplos/ej4.html (2 of 3) [27/02/2003 16:24:02]

Ejercicio 4. Modificacin y consulta de propiedades en tiempo de ejecucin

Atrs Francisco Cortijo Bon

file:///D|/Manuales/intro/ejemplos/ej4.html (3 of 3) [27/02/2003 16:24:02]

Ejercicio 5. Mtodos asociados a componentes

Curso de C++ Builder Ejercicio 5. Mtodos asociados a componentes

Modificaremos el gestor del evento OnCreate del componente MainForm para que no se muestren los dos botones de radio.//--------------------------------------------------------------void __fastcall TMainForm::FormCreate(TObject *Sender) { MainForm->Caption = "Primer programa con C++ Builder"; if (MainForm->Color == clBtnFace) MainForm->Color = clWhite; CheckBox->Checked = false; RadioButton1->Hide(); RadioButton2->Hide(); // Lectura // Escritura

// Escritura

// Hide() es el metodo que oculta el // componente sobre el que se aplica.

} //---------------------------------------------------------------

Si generamos el ejecutable y ejcutamos el programa, el resultado es el mostrado en la figura E5.1. Figura E5.1. El programa al iniciar su ejecucin despus de modificar propiedades en tiempo de ejecucin y de llamar al mtodo Hide() asociado a los componentes RadioButton

file:///D|/Manuales/intro/ejemplos/ej5.html (1 of 2) [27/02/2003 16:24:03]

Ejercicio 5. Mtodos asociados a componentes

Atrs Francisco Cortijo Bon

file:///D|/Manuales/intro/ejemplos/ej5.html (2 of 2) [27/02/2003 16:24:03]

Ejercicio 6. Gestores de eventos

Curso de C++ Builder Ejercicio 6. Gestores de eventos

Construiremos el gestor del evento asociado a modificar el componente CheckBox de forma que cuando se active (inicialmente est desactivado) se muestren los dos botones de radio y se active el botn de OK. Cuando se desactive, los botones de radio se volvern a ocultar y el botn de Ok se desactivar. Para ello, escribiremos el gestor asociado al evento OnClick del componente CheckBox://-----------------------------------------------------------void __fastcall TMainForm::CheckBoxClick(TObject *Sender) { if (CheckBox->Checked == true) { RadioButton1->Show(); RadioButton2->Show(); RadioButton1->Checked = true; OKButton->Enabled = true; } else { RadioButton1->Hide(); RadioButton2->Hide(); OKButton->Enabled = false; LabelOutput->Caption = ""; } } //------------------------------------------------------------

Al ejecutar el programa, cuando se activa el CheckBox produce el siguiente resultado: Figura E6.1. El programa al activar el CheckBox

file:///D|/Manuales/intro/ejemplos/ej6.html (1 of 3) [27/02/2003 16:24:03]

Ejercicio 6. Gestores de eventos

Finalmente, escribiremos el gestor del evento asociado a hacer click sobre el botn OK, que est operativo (propiedad Enabled) nicamente cuando el CheckBox est activado, y en consecuencia, cuando pueden emplearse los botones de radio. Observar el siguiente cdigo y dos resultados de la ejecucin (figuras E6.2 y E6.3)://-----------------------------------------------------------void __fastcall TMainForm::OKButtonClick(TObject *Sender) { if (RadioButton1->Checked) { if (Edit->Text == "") LabelOutput->Caption = "Escogi Opcin 1, Sr/Sra. desconocido/a"; else LabelOutput->Caption = "Escogi Opcin 1, Sr/Sra. " + Edit>Text; } else { if (Edit->Text == "") LabelOutput->Caption = "Escogi Opcin 2, Sr/Sra. desconocido/a"; else LabelOutput->Caption = "Escogi Opcin 2, Sr/Sra. " + Edit>Text; } } //------------------------------------------------------------

Figura E6.2. Resultado al seleccionar la opcin 1 estando el cuadro de edicin vaco.file:///D|/Manuales/intro/ejemplos/ej6.html (2 of 3) [27/02/2003 16:24:03]

Ejercicio 6. Gestores de eventos

Figura E6.3. Resultado al seleccionar la opcin 2 habiendo escrito algo en el cuadro de edicin.

Atrs Francisco Cortijo Bonfile:///D|/Manuales/intro/ejemplos/ej6.html (3 of 3) [27/02/2003 16:24:03]

C++ Builder

Curso de C++ Builder

Introduccin El IDE Componentes La VCL Programacin orientada a objetos en C++ Tratamiento de excepciones Programacin con hebras Acceso a bases de datos Enlaces interesantes Todo en un ZIP

ndice

Ejercicios

Apndices

file:///D|/Manuales/contents.html (1 of 2) [27/02/2003 16:24:03]

C++ Builder

Francisco Jos Cortijo Bon & Fernando Berzal GalianoTodos los derechos reservados por los autores sobre el contenido de este documento electrnico. Queda prohibido su uso comercial sin el consentimiento escrito de los autores. Cualquier uso de este material debe ser comunicado a los autores.

file:///D|/Manuales/contents.html (2 of 2) [27/02/2003 16:24:03]

VCL

Curso de C++ Builder La VCL (Biblioteca de Componentes Visuales)

q q q q q

4.1. Un paseo por la VCL. 4.2. Clases de formularios y aplicaciones. 4.3. Clases de componentes. 4.4. Restricciones al uso de la VCL en C++ Builder. 4.5. Ejercicios: Pizarra, Controles de edicin y Editor.

En Windows, no son las aplicaciones quienes manejan los recursos del sistema como pueden ser la memoria, los ficheros, las ventanas y hasta los controles grficos. Es el sistema operativo quin realiza todas estas tareas. Y la aplicacin se limita a realizar peticiones de lo que necesita. Estas peticiones se realizan mediante lo que se denomina la API de Windows, que es un conjunto de funciones que proporciona el sistema operativo para poder habilitar la comunicacin. Pero este conjunto de funciones es muy grande, poco estructurado y difcil de manejar. Por todo esto es que los entornos de programacin visuales, en su afn de aportar simplicidad y estructuracin a la programacin en Windows, han desarrollado diversos Marcos de Trabajo. Un marco de trabajo es una fase intermedia que se coloca por encima de la API para aportar mayor sencillez a las aplicaciones. Normalmente estos marcos de trabajo son orientados a objetos y se implementan como bibliotecas del lenguaje base, por ello tambin se suelen denominar bibliotecas de clases. La VCL es un marco de trabajo visual y orientado a objetos.

Figura 4.1. La VCL como interface.file:///D|/Manuales/intro/4.html (1 of 7) [27/02/2003 16:24:04]

VCL

Tan importantes son los marcos de trabajo, que dominar un entorno de programacin visual, suele traducirse en conocer el leguaje base del entorno, y su marco de trabajo. Los marcos de trabajo se pueden clasificar en dos categoras: 1. Los marcos de trabajo C++ (OWL y MFC) 2. La VCL. OWL (Object Windows Library o Biblioteca de Objetos para Windows) fue un marco de trabajo desarrollado por Borland e incorporado a los compiladores Borland C++ (versiones 3 y sucesivas) y supuso un importante hito en la programacin para Windows por su potencia y facilidad de uso. Microsoft desarroll su propio marco de trabajo, el MFC (Microsoft Foundation Class o Biblioteca Fundamental de Clases de Microsoft) y lo incorpor a los compiladores Microsoft Visual C++ (actualmente incluso en Borland C++ 5). MFC es una biblioteca de clases menos abstracta que el OWL y ms cercana a la API. Tambin resulta ms sencillo que OWL para los programadores que conocen la API. Aunque MFC se usa ms que OWL (Microsoft...) la arquitectura de OWL es, tcnicamente, mejor que MFC. En 1995, Borland lanz al mercado Delphi, que supuso la revolucin en la programacin para Windows e inici el desarrollo rpido y sencillo de aplicaciones visuales. Delphi ofreca el desarrollo rpido de aplicaciones (RAD) empleando componentes (objetos que pueden ubicarse en formularios y manipulados por medio de propiedades, mtodos y eventos). Esta forma de trabajo se hizo ms popular con Visual Basic. Delphi empleaba como base al lenguaje Object Pascal (una ampliacinfile:///D|/Manuales/intro/4.html (2 of 7) [27/02/2003 16:24:04]

VCL

de Pascal que incorpora programacin orienta a objetos) y permita la creacin de programas ejecutables independientes que no requeran intrprete, por lo que se ejecutaban mucho ms rpido que los de Visual Basic. Lo ms relevante desde el punto de vista tcnico es que Borland cre la VCL (Visual Class Library o Biblioteca de Componentes Visuales) que es un marco de trabajo para crear aplicaciones Windows diseada en torno al concepto de componente (propiedades, mtodos y eventos). La VCL desarrollada para Delphi es la misma que se emplea como ncleo de C++ Builder, de hecho, est escrita en Object Pascal... La VCL hace un uso extensivo del concepto de herencia. El objetivo final de la VCL es crear clases que representan a componentes, aunque algunas clases no hagan referencia componentes concretos: realizan tareas de gestin interna y se emplean como clases bases para derivar mediante herencia otras clases. En la figura 4.2 mostramos una pequea parte de la jerarqua de clases que forman la VCL. En las secciones 4.1, 4.2 y 4.3 describimos con ms detalle las clases ms importantes de la VCL. Figura 4.2. Jerarqua de clases de la VCL.

4.1. Un paseo por la VCLConocer en profundidad la VCL se nos antoja imposible, adems de innecesario. Es

file:///D|/Manuales/intro/4.html (3 of 7) [27/02/2003 16:24:04]

VCL

posible construir aplicaciones Windows de gran calidad con C++ Builder sin un conocimiento exhaustivo de la VCL, aunque consideramos conveniente relizar una somera descripcin de la jerarqua de clases que conforman la VCL. Las clases que conforman la parte superior de la jerarqua de la VCL (TObject, TPersistent y TComponent) se denominan clases "abstractas" porque sirven para estructurar, y agrupar comportamientos comunes de las clases de la VCL. No se suelen crear objetos directamente a partir de ellas. Rigurosamente hablando, no son clases abstractas, porque no tienen mtodos virtuales puros (ver seccin 5.5.2), pero las podemos considerar como tales en la prctica. TObject Es el ancestro de todas las clases de la VCL. Encapsula el comportamiento comn de los objetos en C++ Builder, como puede ser informacin de la clase, instanciacin... Suele ser una buena idea derivar nuestras propias clases de TObject, porque aunque no sea normal que el programador haga uso de los mtodos proporcionados por TObject, si lo es que lo haga C++ Builder en tiempo de ejecucin. Directamente de TObject heredan aquellas clases que no son componentes, y no necesitan ser almacenadas en disco. TPersistent Esta clase tiene que ver con la habilidad de un objeto de almacenarse en disco o en memoria, asignarse a otros objetos, as como otros detalles internos de C++ Builder que no es preciso conocer. TComponent sta es una de las clases ms importantes de la VCL, ya que la mayora de los objetos que se manejan en una aplicacin son componentes. Esta clase proporciona toda la funcionalidad que requiere un componente bsico. La funcionalidad de TComponent permite que los objetos aparezcan en la paleta de componentes y que sean manipulados por el diseador de formularios, adems de otras capacidades comunes a los componentes. Los componentes no visuales derivan directamente de TComponent mientras

file:///D|/Manuales/intro/4.html (4 of 7) [27/02/2003 16:24:04]

VCL

que los componentes visuales derivan de TControl, que a su vez deriva de TComponent. Por esta razn se suelen denominar controles a los componentes visuales. TControl Proporciona la funcionalidad de los componentes visuales (controles). Esta funcionalidad es principalmente el aspecto visual que deben ofrecer los componentes en tiempo de ejecucin. TControl proporciona mayor funcionalidad que la que requieren los componentes visuales: los componentes individuales derivan de TGraphicControl o de TWinControl, clases derivadas de TControl. TGraphicControl Generaliza a los controles que tienen una representacin visual, pero no pueden recibir el foco: el usuario podr verlos pero no interactuar con ellos. Suelen ser controles para visualizar texto (no editable en tiempo de ejecucin), grficos o dibujos. Poseen una propiedad Canvas que permite acceder a su rea de dibujo. TWinControl Son los controles tpicos de Windows, que pueden recibir el foco, contener otros controles, y adems poseen un manejador de ventana. Un manejador de ventana es un identificador que proporciona Windows para el control, por lo que podemos decir que Windows tiene un conocimiento directo de la existencia del mismo.

4.2. Clases de Formularios y AplicacionesSon controles en si mismas, pero no se presentan en la paleta de componentes. TApplication La clase TApplication encapsula una aplicacin Windows por lo que caracteriza las operaciones fundamentales de un programa en Windows. TApplication simplifica el interface entre el programador y el sistema operativo, ocupndose de tareas como gestionar el paso de mensajes, proporcionar la ayuda contextual, establecer los textos de sugerencia de los botones y barras de estado,file:///D|/Manuales/intro/4.html (5 of 7) [27/02/2003 16:24:04]

VCL

procesamiento de "teclas rpidas", gestin de excepciones, ejecutar cuadros de mensajes, etc. Todas las aplicaciones de C++ Builder tienen un puntero a un objeto TApplication denominado Application, que se crea automticamente.

Como Application se crea automticamente no aparece en la paleta de componentes ni est disponible en el inspector de objetos para manipular "visualmente" sus propiedades. En cualquier caso, algunas propiedades pueden establecerse en tiempo de diseo seleccionando las pginas Forms o Applicaction despus de seleccionar Project | Options.

Propiedades, mtodos y eventos de aplicaciones.

TForm La clase TForm caracteriza a los formularios en la VCL. Los formularios se emplean como ventanas principales, cuadros de dilogo, ventanas secundarias o cualquier otro tipo de ventana que se pueda imaginar.

Propiedades, mtodos y eventos de formularios.

4.3. Clases de componentesEste grupo abarca un amplio espectro de clases. Bsicamente, incorpora a todos los componentes que aparecen en la paleta de componentes del IDE de C++ Builder (ver seccin 3.1) lo que implica que se pueden colocar sobre un formulario.

file:///D|/Manuales/intro/4.html (6 of 7) [27/02/2003 16:24:04]

VCL

Lista completa de componentes, agrupados por pginas.

Propiedades, mtodos y eventos de componentes.

4.4. Restricciones al uso de la VCL en C++ BuilderLa VCL se desarroll originariamente en y para Delphi, por lo que est construida en Object Pascal. Aunque esto no supone normalmente consideraciones especiales, existen algunos aspectos que deben ser tenidos en cuenta:q

Los objetos de la VCL deben crearse siempre dinmicamente (con new). Esto es as porque deben de localizarse en el heap, y no en la pila. La VCL no asigna valores por defecto a las funciones. No se puede usar herencia mltiple con clases VCL.

q

q

4.5. Ejercicios: Pizarra, Controles de edicin y Editor.q q q

Pizarra . Controles de edicin . Editor.

Pgina principal Francisco Cortijo Bon

file:///D|/Manuales/intro/4.html (7 of 7) [27/02/2003 16:24:04]

La variable Application

Curso de C++ Builder Sobre la variable Application

Cuando un programa empieza a ejecutarse, C++ Builder instancia la variable Application, llama a sus mtodos Initialize(), CreateForm() y Run(). A modo de ejemplo, si retomamos el ejemplo inicial de este curso (proyecto Inicial), observar el contenido del fichero que C++ Builder crea como fichero principal de la aplicacin, Inicial.cpp. Recordar que el formulario principal se llam, finalmente, MainForm. En Inicial.cpp://-------------------------------------------------------------------------#include #pragma hdrstop USERES("Inicial.res"); USEFORM("main.cpp", MainForm); //-------------------------------------------------------------------------WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TMainForm), &MainForm); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; } //--------------------------------------------------------------------------

Atrs

file:///D|/Manuales/intro/vcl/application.html (1 of 2) [27/02/2003 16:24:04]

La variable Application

Francisco Cortijo Bon

file:///D|/Manuales/intro/vcl/application.html (2 of 2) [27/02/2003 16:24:04]

TApplication - Propiedades, mtodos y eventos

Curso de C++ Builder TApplication - Propiedades, mtodos y eventos

q q q

1. Propiedades de las aplicaciones. 2. Mtodos de las aplicaciones. 3. Eventos de las aplicaciones.

1. Propiedades de las aplicaciones.Propiedad Active Descripcin Especifica si la aplicacin est activa y tiene el foco. Hint especifica el texto que debe aparecer en el cuadro de ayuda o texto de sugerencia asociado a la aplicacin. Este cuadro aparece cuando ocurre el evento OnHint. Por defecto se muestra nicamente el cuadro asociado al componente sobre el que est el ratn por lo que usualmente se emplea esta propiedad para mostrar la informacin extensa de este componente en una barra de estado, por ejemplo. ShowHint determina si los cuadros de sugerencia estarn activados o desactivados para toda la aplicacin. Pueden emplearse las funciones GetShortHint() y GetLongHint() para obtener las dos partes de la propiedad Hint

Hint y ShowHint

file:///D|/Manuales/appendix/tapplication.html (1 of 4) [27/02/2003 16:24:05]

TApplication - Propiedades, mtodos y eventos

MainForm especifica qu formulario acta como ventana principal de la aplicacin. MainForm y ShowMainForm ShowMainForm especifica si la aplicacin debe mostrar la ventana principal al iniciar su ejecucin. Para ocultarla, establecer esta propiedad a false antes de la llamada a Application->Run y asegurarse de que la propiedad Visible del formulario est tambin a false.

Icon y Title

Especifican el icono y el texto, respectivamente, que aparecen en la barra de tareas de Windows cuando se minimiza la aplicacin. Pueden establecerse en tiempo de diseo seleccionando Project | Options | Application.

HelpFile y Para especificar el fichero de ayuda asociado a la aplicacin. CurrentHelpFile.

2. Mtodos de las aplicaciones.Mtodo BringToFront() Descripcin Establece la ltima ventana activa como la que se muestra por encima de todas las dems. Crea un nuevo formulario. Generalmente, el programador no usa este mtodo ya que las lneas de cdigo para la creacin de formularios las aade automticamente C++ Builder. Se emplean para gestionar la ayuda asociada a una aplicacin. Generan