Los componentes son unos elementos genéricos con una funcionalidad muy concreta, cuya única finalidad es la reutilización. Cada uno de ellos está destinado a realizar una tarea típica en una aplicación.
Un componente de la VCL es una clase que caracteriza a un control de Windows agregando propiedades, métodos y gestores de eventos a cada control.
La filosofía 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. Páginas de componentes
Como ya hemos comentado anteriormente los componentes se agrupan en la paleta de componentes en distintas páginas, a saber:
Standard: Incluye los componentes comunes y más habituales de los programas Windows.
Additional: Los componentes de esta página son controles especializados. propios de C++ Builder.
Win32: Componentes de cuadros de diálogo propios de Windows 95/NT.
System: Esta página incluye controles muy especializados para interacción con el sistema.
Internet: Componentes para distintos protocolos de acceso a Internet.
Data Access y Data Controls: Componentes especializados para acceso a bases de datos.
Midas: Esta página incluye componentes que permiten el desarrollo de aplicaciones multicapa con MIDAS.
Decision Cube: Incluye componentes para realizar análisis multidimensionales de datos con objeto de tomar decisiones.
QReport: Componentes para diseñar rápidamente informes y resúmenes.
Dialogs: Contiene cuadros de diálogo comunes en aplicaciones Windows listos para usar.
Win 3.1: Componentes propios de Windows 3.1, la mayoría de ellos se mantienen en C++ Builder sólo por compatibilidad con versiones anteriores.
Samples: Componentes de demostración (cómo hacer componentes personalizados).
Active X: Los componentes de esta página son objetos Active X, creados por otros desarrolladores puede que utilizando otros lenguajes de programación.
Para más detalles, consultar la lista completa de componentes, agrupados por páginas. |
3.2. Propiedades, métodos y gestores de eventos
De un componente podemos destacar tres aspectos: sus propiedades, los métodos 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 común. Por ejemplo, todos los componentes visuales tienen las propiedades Top y Left que controlan la posición del componente en el formulario, tanto en tiempo de diseño como en tiempo de ejecución.
Hemos visto como pueden establecerse y modificarse las propiedades de los componentes en tiempo de diseño utilizando el inspector de objetos. Las propiedades tienen, normalmente, un método de acceso asociado que se ejecuta al modificar la propiedad en tiempo de ejecución. Para modificar una propiedad basta (generalmente) con asignarle el nuevo valor. Al realizar un cambio, la VCL invoca el método de acceso a la propiedad. En el caso concreto de la propiedad Left, la VCL dibuja de nuevo todo el formulario en la nueva ubicación.
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 ejecución. En definitiva, hay un
especificador de lectura y un especificador
de escritura.
Los especificadores de acceso asocian métodos de lectura
o de escritura (funciones, en definitiva) con las
propiedades. Al consultar o modificar el valor de una
propiedad se invocan, automáticamente, las funciones
respectivas asociadas:
Al asignar un nuevo valor a una propiedad se está accediendo al especificador de escritura. La VCL comprueba si existe un método 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 mayoría de los casos el especificador de lectura no hace más que devolver el valor de la propiedad.
EJERCICIO 4: Modificación y consulta de propiedades en tiempo de ejecución. |
 
Métodos.
Los métodos son funciones asociadas al componente que pueden invocarse para que el componente realice distintas acciones.
Por ejemplo, todos los componentes visuales tienen un método llamado Show() para mostralos y otro llamado Hide() para ocultarlos. En el ejemplo 3 invocamos al método Terminate() asociado a la aplicación que se estaba ejecutando (Objeto Application) para terminar su ejecución como respuesta a la pulsación del botón.
En C++ los métodos son miembros de una clase, al igual que las propiedades.
EJERCICIO 5: Métodos asociados a componentes. |
 
Eventos.
Un evento es cualquier suceso que
puede ocurrirle a un componente (movimiento del ratón,
pulsación de algún botón del ratón, pulsación 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 demás
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 (pestaña Events) se selecciona el evento al que debe responder y, cuando se active el editor de código, se escribe el código 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 enviándole un mensaje. Un programa Windows está ocioso la mayor parte del tiempo esperando a que ocurra algún evento.
EJERCICIO 6: Gestores de eventos. |
 
3.3. Componentes visuales y no visuales
Se 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 representación gráfica en tiempo de diseño y ejecución (botones, barras de scroll, cuadros de edición, etc.), y se dice no visual en caso contrario (temporizadores, cuadros de diálogo -no visibles en la fase de dieño-, etc). Por lo demás no existen más diferencias entre ellos, excepto, claro está, las derivadas de la visualización del componente.
Los componentes no visuales se pueden colocar en los formularios de la misma manera que los controles, aunque en este caso su posición es irrelevante.