Ir para conteúdo
Faça parte da equipe! (2024) ×

Criar componentes em tempo de execução adicionando novos eventos [parte 1]


Inoxybel
 Compartilhar

Posts Recomendados

O delphi facilita muito na hora de criar sua aplicação, pois disponibiliza uma rápida montagem da aparência da sua aplicação como também facilita a manipulação de eventos de seus componentes.

 

Se por acaso você quiser que ao clicar em um botão a aplicação faça algo, basta você dar dois simples cliques no evento "OnClick" de tal componente e se divertir. Porém, alguns componentes tem limitação de eventos em relação à outros, por exemplo, o label tem os eventos OnMouseEnter (se o mouse ficar por cima do label) e OnMouseLeave (se o mouse sair de cima do label) como pode ser visto na imagem abaixo:

 

8gh6n.png

 

Com esses dois eventos podemos fazer um hint aparecer quando o usuário passar o mouse em cima do label, e esse mesmo hint, sumir quando o usuário retirar o mouse de cima do label...

Já em um button não podemos fazer isso com o padrão do delphi devido as limitações que citei no início do tópico, pois como podemos ver na imagem abaixo, ele não possui esses dois eventos:

 

8ghmI.png

 

Agora que você tem o conhecimento dessa limitação, irei agora lhe mostrar como contornar essa situação e adicionar esses dois eventos (OnMouseEnter, OnMouseLeave) no button, assim ampliando as possibilidades de criar projetos diferentes e mais completos.

 

Pra começar, iremos criar uma classe nova para adicionar propriedades em nosso novo button, essa classe é criada no bloco 'type' onde a classe TForm1 é criada por padrão.

Mãos à obra, cria uma nova aplicação e adicione:

 

1 - Label

1 - Button

1 - Image

e se preferir, um XPManifest (aba Win32) para deixar a aplicação um pouco mais elegante.

 

Deixei a minha aplicação bagunçada assim:

8ghOz.png

 

Agora criemos a nossa classe para criar nosso botão, acima da classe TForm1 que provavelmente está assim aí na sua unit:

É necessário se cadastrar para acessar o conteúdo.

 

Adicionando nossa classe para criar nosso botão:

8ghTA.png

 

Explicando:

É necessário se cadastrar para acessar o conteúdo.

 

É necessário se cadastrar para acessar o conteúdo.

 

É necessário se cadastrar para acessar o conteúdo.

 

Agora as duas funções chaves declaradas na sessão privada para funcionar só para nossos botões criados com nossa classe:

É necessário se cadastrar para acessar o conteúdo.

 

É necessário se cadastrar para acessar o conteúdo.

 

 

Agora que temos nossa classe pronta, podemos criar nossos botões com suas novas mensagens.

 

Antes, vamos dar sentido às funções citadas acima, pois criamos elas, mas não definimos o que elas fazem, portanto:

É necessário se cadastrar para acessar o conteúdo.

É necessário se cadastrar para acessar o conteúdo.

 

 

Acho que não é necessário aprofundar as explicações do conteúdo acima, se houver alguma dúvida, mencione no tópico que eu ou algum membro tentará sanar sua dúvida.

 

Agora que já temos toda a teoria e 'esqueleto' pronto, vamos ao que interessa, criar os botões:

Primeiro chame o evento OnCreate do form, para criar nossos componentes na mesma hora que o formulário for criado.

 

É necessário se cadastrar para acessar o conteúdo.

 

Agora para finalizar, vamos criar as tarefas, não é mesmo?

Já temos os botões e os eventos, agora temos que programar o que ele irá fazer quando essas duas mensagens forem chamadas pela aplicação.

 

Lembra do componente TImage? Carregue uma imagem nele e mude seu Visible para false e mãos na massa:

É necessário se cadastrar para acessar o conteúdo.

 

Compile e veja o resultado, faça o teste passando o mouse por cima dos dois botões criados e depois passe o mouse em cima do botão que foi colocado por você no form...

 

Há uma lista de mensagens para adicionar eventos que a princípio não há por padrão em alguns componentes, dê uma procurada que é fácil de achar...

 

Qualquer dúvida mencione a mesma no tópico, obrigado.

Meus brinquedos em WinAPI:

Calculador

MemoryScanner

Faça parte também da DarkProgramming Team!

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.