Cassic

VCL

Autor: Tadeu Pereira


  (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.