Frente a la clase TObject, el componente se caracteriza por tener un código de incialización que le permite "representarse", dentro de la paleta de controles y además tener una serie de propiedades como la propiedad tag y la propiedad name que le permiten identificarse de manera única dentro del formulario mediante un nombre y un identificador únicos..
Como vemos la clase TComponent tiene una serie de características algo diferentes a las que posee la clase TObject que es la base de todos los componentes.
Propiedades de la clase TComponent
Como hemos dicho anteriormente los componentes presentan una serie de características comunes. ¿Cuales son esas características comunes:.
El procedimiento Register
El componente se colocará en la paleta de componentes a raíz de la ejecución del procedimiento llamado Register. El mencionado procedimiento hace visible el componente dentro de la paleta en el momento en que es compilada la librería de paquetes. El procedimiento register no tiene impacto en los procedimientos que se encuentran en la unit o en los recursos asignados por el componente, de hecho el procedimiento es ejecutado manualmente por lo que no debería ser invocado manualmente. El procedimiento Register realiza una llamada a la función RegisterComponents que posee la siguiente sintáxis:
RegisterComponents("Samples", classes, 0);
La función RegisterComponent crea un array con los con el componentes que se quieren registrar. Una vez que ha sido creado el array de componentes pasa en el primero de los parámetros la pestaña en la que va a instalar el componente, a continuación el array creado y el tercero de los parámetros será el tamaño del array.
La función ValidCtrCheck()
La función ValidCtrCheck(TGestionErrores *) realiza una instancia del componente, en tiermpo de compilación, para comprobar que se puede realizar correctamente una instancia del componente. Si se produjera cualquier error dentro del componente no se crearía y fallaría la instanciación. Por lo tanto la misión de la mencionada función tiene como misión comprobar que se puede realizar la instancia del objeto en cuestión.
La función ValidCtrCheck es una función inline que nunca deberá ser llamada directamente al igual que la función RegisterComponent. No genera ningún código por lo que no tiene ningún coste asociado en tienpo de ejecución para el componente.
Una vez vistas las funciones que van a determinar la creación de un componente deberemos plantearnos ¿dónde se almacenan los componentes?. Hemos visto que los componente utilizan la macro PACKAGE. Esta macro indica al componente que va a pertenecer a un package determinado. LLegado a este punto deberemos plantearnos ¿qué es un package?.