Post: Criando um Componente

Alessandro Medeiros

Fala ai Radizeiros e Radizeiras, tudo bem com vocês?

Quantas vezes você precisou de algumas funcionalidade e achou um componente na internet e colocou em seu projeto e esse componente foi descontinuado e você acabou ficando na mão?

Você realiza o mesmo procedimento diversas vezes e por que não automatizar isso?

O Delphi nos proporciona uma gama de funcionalidades que nos ajuda a automatizar diversas rotinas de trabalho, e uma delas é a criação de componentes, onde evitamos que nosso sistema fique dependente de terceiros, e temos total domínio das nossas ferramentas.

Aqui nesse post irei lhe ensinar a criar um componente, de forma simples e prática, onde você poderá aplicar no seu dia a dia, criando sua própria paleta de componente no Delphi.

Irei criar um componente simples, para que após a leitura desse post você possa entender os funcionamento dos eventos, e como eles trabalham dentro dos componentes.

Vamos lá?

Para criarmos um componente você deve ir no menu do Delphi e escolher a opção de packages, como mostra a imagem abaixo.

Desta forma criamos nosso novo pacote.

Nesse nosso novo componente iremos adicionar uma Unit.


type
    TEventos = class(TComponent)
        private
        public
            function TamanhoString(Value : String) : Integer;
        published
    end;

implementation

{ TEventos }

procedure register;
begin
    RegisterComponents('BlogComponents', [TEventos]);
end;

function TEventos.TamanhoString(Value: String): Integer;
begin
    Result := Length(Value);
end;

Observe no código acima que criamos uma classe que herda de TComponent, todo componente que você for criar ele tem que herdar de TComponent, e foi criado um método TamanhoString.

Fazendo isso já temos uma estrutura para o componente funcionar, se você nunca criou um componente no Delphi, é basicamente isso que vamos usar.

Na cessão da interface foi declaramos um método register, em sua implementação usamos o método RegisterComponents, nele passamos a classe em que nosso componente irá se registrar, e logo em seguida passo um array com os componentes que serão adicionados na paleta de componentes.

Feito isso, já podemos compilar e instalar nosso componente.

Viu agora nosso componente já está na paleta do Delphi.

Você pode reparar que já veio com algumas propriedades padrões que é da classe TComponent, mas não tem nenhum evento.

Então o que iremos colocar dentro desses nossos eventos para ele funcionar?

Vamos voltar em nosso código, e você pode estar se perguntando para que o tal de published adicionado na classe?

Quando você coloca qualquer property dentro desse plubished o Delphi já habilita e coloca isso no Object Inspector do Delphi para trabalharmos com eles.


type
    TEventos = class(TComponent)
        private
            FNome: String;
            procedure SetNome(const Value: String);
        public
            function TamanhoString(Value : String) : Integer;
        published
            property Nome : String read FNome write SetNome;
    end;

Adicionamos uma property Nome e depois de compilar nosso componente, veja agora as propriedade do que acabamos de adicionar no Object Inspector.

Agora podemos em tempo de design atribuir um nome para o nosso componente.

Em nosso código criamos um método que recebe uma String e retorna o tamanho dessa String;

Agora vamos dizer que queremos criar um evento nesse nosso componente, em seguida nos criamos uma property do tipo do evento criado.


type
    TNotifyEvent = procedure (Sender : TObject) of Object;
...
    property Status : TNotifyEvent read FStatus write SetStatus;
...

Depois de compilado esse nosso componente observe o nosso evento Status parecendo na aba eventos do Object Inspector.

Vamos criar uma aplicação simples com alguns outros componentes para que possamos ver o funcionamento desse nosso novo componente.

No evento de Status do componente iremos adicionar a string passada na propriedade Nome do componente para o TMemo da nossa aplicação de exemplo.


procedure TForm2.Eventos1Status(Sender: TObject);
begin
    Memo1.Lines.Add(TEventos(Sender).Nome);
end;

Vamos na classe do componente e adicionar mais algumas funcionalidades.


...
public
...
    procedure OnStatus;
...
procedure TEventos.OnStatus;
begin
    if Assigned(Status) then
        Status(Self);
end;
...
function TEventos.TamanhoString(Value: String): Integer;
begin
    Nome := Value;
    Result := Length(Value);
    OnStatus;
end;

Observe que criamos um método chamado OnStatus e dentro desse método verificamos se foi atribuído algum ponteiro para esse evento e retorna o Status.

No método TamanhoString adicionamos na propriedade nome o valor passado a esse método, e logo em seguida chamamos o método OnStatus.

Na nossa aplicação de exemplo no botão passamos o valor do edit no método TamanhoString do nosso componente e o seu retorno é passado para o Label que adicionamos na aplicação.


procedure TForm2.Button1Click(Sender: TObject);
begin
    Label1.Caption := IntToStr(Eventos1.TamanhoString(Edit1.Text));
end;

Fazendo assim após compilado veja o resultado.

Passamos o nome Thulio e ao clicar no botão olha as ações que ocorreram, foi adicionado a String no memo e o tamanho dessa String foi passada para o label.

Viu como de forma simples criamos um componente?

Esse componente que criamos é um componente simples, mas se você nunca viu ou nunca criou um componente viu agora como é fácil.

Para um componente você viu que devemos ter a procedure register declarada, e na sua implementação chamamos o método RegisterComponents passando a seção que queremos salvar esse componente, e as classe que são nossos componentes.

Com o conhecimento que aplico em um dos meus treinamentos, o de Certificação especialista em programação orientada a objetos, você consegue aplicar técnicas que irão lhe ajudar a não ficar dependentes de componentes de terceiros, e até mesmo criar o seu próprio componente para que automatize suas rotinas, assim como mostrado aqui nesse post.

A Certificação Especialista Orientada a Objetos dará a você a oportunidade de melhorar seu software, otimizar o seu tempo e te dar a possibilidade de atender melhor os seus clientes. Conhecer a fundo esse paradigma e utilizar todos os seus benefícios irá facilitar muito a sua vida quando houver necessidade por parte de um cliente de um update rápido ou resolver um problema.

CLIQUE AQUI PARA SABER MAIS SOBRE A CERTIFICAÇÃO ESPECIALISTA EM PROGRAMAÇÃO ORIENTADA A OBJETOS





Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre Criando um Componente, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao Criando um Componente, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2024 – Todos os direitos reservados