-
O componente TComponent é a classe base para todos os componentes no Free Pascal e Lazarus, e também em outras plataformas como o Delphi. Ele oferece uma infraestrutura essencial para a criação e gerenciamento de componentes, permitindo que eles sejam organizados em hierarquias, sejam persistidos em arquivos, notificados sobre eventos importantes, e gerenciados de forma automatizada. A seguir está uma descrição detalhada dos principais aspectos do TComponent:
-
Principais Propriedades:
-
Owner:
- Um componente TComponent pode ter um proprietário, que também é um TComponent. O proprietário é responsável por liberar a memória dos componentes que possui quando ele próprio é destruído.
-
Name:
- Nome único do componente no contexto do seu proprietário. Este nome é frequentemente usado para identificar componentes em arquivos de projeto (como .lfm).
-
Tag:
- Uma propriedade inteira que pode ser usada para armazenar qualquer valor desejado. É comumente usada para armazenar informações adicionais que o desenvolvedor deseja associar ao componente.
-
Components:
- Lista de componentes filhos que este componente possui.
-
ComponentCount:
- O número de componentes filhos que este componente possui.
-
ComponentState:
- Indica o estado atual do componente (por exemplo, se está carregando, se foi destruído, etc.).
-
ComponentStyle:
- Define o estilo do componente, determinando como ele se comporta em tempo de design e em tempo de execução.
-
DesignInfo:
- Informações usadas em tempo de design, como a posição do componente em um designer visual.
-
VCLComObject:
- Usado internamente para integração com a biblioteca de componentes visuais (VCL) no Windows.
-
-
Principais Métodos:
-
Create(AOwner: TComponent):
- Construtor que inicializa o componente e, se fornecido, atribui um proprietário ao componente.
-
Destroy:
- Destrutor que libera recursos associados ao componente.
-
InsertComponent(AComponent: TComponent):
- Insere um componente filho na lista de componentes filhos.
-
RemoveComponent(AComponent: TComponent):
- Remove um componente filho da lista de componentes filhos.
-
FindComponent(const AName: string):
- Busca um componente filho pelo nome.
-
Notification(AComponent: TComponent; Operation: TOperation):
- Notifica o componente sobre operações (por exemplo, inserção ou remoção de outros componentes).
-
FreeNotification(AComponent: TComponent):
- Configura o componente para ser notificado quando outro componente for destruído.
-
RemoveFreeNotification(AComponent: TComponent):
- Remove a notificação configurada anteriormente.
-
ExecuteAction(Action: TBasicAction):
- Permite que o componente responda a uma ação executada.
-
UpdateAction(Action: TBasicAction):
- Atualiza o estado da ação de acordo com o estado do componente.
-
GetEnumerator:
- Retorna um enumerador para iterar sobre os componentes filhos.
-
WriteState(Writer: TWriter):
- Escreve o estado do componente para um fluxo, geralmente usado durante a persistência do componente em arquivos.
-
-
Interface Implementations:
- IUnknown / IInterfaceComponentReference:
- Suporte para a contagem de referências e para a obtenção de uma interface para o componente, importante para a compatibilidade COM e outras funcionalidades avançadas.
- IUnknown / IInterfaceComponentReference:
-
Métodos Protegidos:
- ChangeName(const NewName: TComponentName):
- Altera o nome do componente, com verificações para garantir que o novo nome seja válido.
- DefineProperties(Filer: TFiler): Define as propriedades que serão lidas ou escritas pelo TFiler, usado durante a persistência.
- GetOwner:
- Retorna o objeto que possui o componente, herdado de TPersistent.
- Loaded / Loading:
- Chamados quando o componente é carregado de um fluxo ou arquivo, permitindo inicializações adicionais.
- ReadState(Reader: TReader):
- Lê o estado do componente a partir de um fluxo, permitindo que ele seja restaurado a partir de um arquivo.
- SetName(const NewName: TComponentName):
- Método virtual que define o nome do componente.
- SetParentComponent(Value: TComponent):
- Define o componente pai em uma hierarquia visual.
- ChangeName(const NewName: TComponentName):
-
-
Em resumo, TComponent é o bloco de construção fundamental para a criação de componentes reutilizáveis no ambiente Free Pascal, fornecendo uma vasta gama de funcionalidades para gerenciamento de memória, persistência, e interação entre componentes.