Ir para conteúdo
Entre para seguir isso  
Dark Skyllen

Criação de componentes em run-time

Recommended Posts

Dark Skyllen    7
Dark Skyllen

Componentes em Run-Time

 

 

Irei dar uma breve explicação de como criar componentes no delphi em run-time, ou seja, enquanto o código roda.

Primeiro temos que entender que cada componente do delphi pertence à uma classe do mesmo, ou seja, um Edit pertence à classe TEdit, que possui todas as suas funções e propriedades. Um label pertence à classe TLabel e assim por diante.

 

Com isso, podemos criar facilmente os componentes "no braço", dentro do próprio código. Veja um exemplo:

 

 with TLabel.Create(Self) do
   begin
     Name := 'lbTopo'; {Nome do componente}
     Caption := 'Criamos um label no topo do formulário!'; {Caption}
     Align := alTop; {Se alinha ao topo}
     Font.Color := clRed; {Fonte cor vermelha}
     Font.Style := [fsBold]; {Negrito}
     Parent := Form1; {Seleciona qual será a janela de controle}
     Alignment := taCenter; {Alinhar ao centro}
   end;

Aqui temos um exemplo básico de criação de um Label que se posiciona sempre no topo do formulário. Se precisarmos utilizar esse label mais tarde, podemos utilizar o seguinte código.

 

  TLabel(FindComponent('lbTopo')).Caption := 'Mudei o caption do label!';

Essa função retorna o objeto encontrado, passando o nome como parâmetro. Então com ela, podemos alterar as propriedades do nosso componente. Se quiser, pode fazer com que uma variável do tipo TLabel receba o componente, fazendo apenas:

 

var
 mLabel: TLabel;
begin
 mLabel := TLabel(FindComponent('lbTopo'));
 mLabel.Visible := False;
end;

Também podemos adicionar funções aos nossos componentes, nos seus eventos, como no exemplo abaixo:

 

Primeiro criamos nossa procedure, com os parâmetros corretos

procedure TForm1.TrocaCor(Sender: TObject);
Begin
 try
   (Sender as TLabel).Font.Color := clGreen;
 except on E: Exception do
   showMessage('O objeto sender não é compatível com o objeto requerido! Erro: '+E.Message);
 end;
end;

Se o objeto que estiver tentando acessar a procedure não for do tipo TLabel, ele retorna com a mensagem de erro.

 

Depois, para que tudo funcione, devemos adicionar a função ao evento do nosso componente:

OnClick := TrocaCor;

E pronto, nosso label está criado e funcionando no formulário. Lembrando que podemos criar qualquer tipo de componente e ajeitá-lo de acordo com nosso software.

 

Qualquer dúvida, fiquem a vontade para postar. Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites
zaksz    144
zaksz

Olá,

Blz , tava caçando isso faz uns tempinhos :D.

Compartilhar este post


Link para o post
Compartilhar em outros sites
haxyy    0
haxyy

Muito bom!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×