CASSIC
VCL

  (Visual Component Library – Biblioteca de Componentes Visuais)

  O Windows fornece uma API (Application Program Interface – Interface de Programação de Aplicativo) para auxiliar na criação de programas. Como o Windows é gráfico, fornece em sua API objetos pré-definidos para o uso em aplicações que roda sobre o sistema operacional. Esta API além de objetos e interface, também dá acesso a todos os recursos que o sistema operacional disponibiliza, tais como gerenciamento de memória, acesso a discos entre outros.

  A VCL tem grande parte desta API encapsulada em objetos. Isto facilita a programação, pois boa parte das funções da API estão encapsuladas nestes objetos, restando a nós instanciar os objetos e os mesmos fazem as chamadas as funções da API.

  Alguns destes objetos são disponibilizados como componentes. Um componente é um tipo de objeto específico, que tem um padrĂ£o de interface para se conectar com outros objetos ou componentes.

  Sempre que incluímos um novo componente estamos incluindo na VCL uma nova classe. Esta nova classe é descendente de uma classe relacionada com componentes jé existentes.

     É importante o conhecimento da hierarquia da VLC antes de iniciarmos a criação de componentes. A figura 1 tem um diagrama mostrando essa hierarquia que seré explicada a seguir.


Figura 1 – Hierarquia da VCL

  - TObject: Esta classe está no topo da hierarquia da VCL, servindo de base direta ou indireta para todos as outras classes, sendo impossível a criação de qualquer classe que nĂ£o tenha parentesco com ela.

  - TPersistent: Esta classe introduz os métodos de persistência, permitindo salvar e recuperar dados do componente. Geralmente esses dados são gravados no arquivo DFM.

  - TComponent: Todos os componentes da VCL descendem direta (componentes não visuais) ou indiretamente (componentes visuais) desta classe. O conceito de Proprietário (Owner) e é introduzido nesta classe.

Observação
     - Componentes não visuais: São os componentes que, embora apareçam em design-time, não fazem parte da interface do aplicativo. Esses componentes apenas disponibilizam recursos ao aplicativo, tais como métodos e propriedades.
     - Componentes visuais: São os componentes que fazem parte da interface do aplicativo, além de disponibilizam recursos.

  - TControl: Esta classe é a base para todos componentes visuais, introduzindo o comportamento comum a todos esses eles. O conceito de Container Visual (Parent) é implementado nesta classe.

  - TGraphicControl: Os componentes não-ajanelados (não recebem foco e não pode conter outros componentes) têm esta classe como ancestral. Um componente descendente desta classe tem como propêsito primário exibir textos ou gráficos.

  - TWinControl: Os componentes utilizados na criação das interfaces com usuários têm esta classe como base. Estes componentes podem processar entradas do teclado e mouse, recebendo o foco, além de poderem conter outros componentes.

  - TCustomControl: Esta classe permite herdar todas as características da classe TWinControl além da propriedade Canvas e do método Paint. Assim como na classe TGraphicControl, a propriedade Canvas desta classe fornecer acesso   área de desenho do controle, enquanto o método Paint permite desenhar diretamente sobre está superfície.