Fórum Criação de componente #286639
01/07/2005
0
Estou criando um novo botão descendente do TButton. Mas quero fazer com que, ao darem duplo clique no botão, ao invéz de chamar o evento OnClick do botão chame um evento que eu criei, por exemplo MeuOnClick. Alguém sabe como o Delphi faz para saber qual evendo tem que chamar?
Grato,
Rodrigo Cesar
Rodc
Curtir tópico
+ 0Posts
01/07/2005
Stratofabius
Declara o Metodo OnDblClick com o inherited dentro da procedure
Exemplo :
[color=blue:f3f02aead5]procedure[/color:f3f02aead5] TMyButton.OnDblClick(Sender: TObject);
[color=blue:f3f02aead5]Begin[/color:f3f02aead5]
inherited OnDblClick(Sender);
ExecutarMinhaProcedure;
...
...
[color=blue:f3f02aead5]End[/color:f3f02aead5];
[color=blue:f3f02aead5]procedure[/color:f3f02aead5] TMyButton.ExecutarMinhaProcedure;
[color=blue:f3f02aead5]Begin[/color:f3f02aead5]
Showmessage(´Blablabla´);
...
..
[color=blue:f3f02aead5]End[/color:f3f02aead5];
Não lembro direito mas deve ser mais ou menos isso!!!
Abraço
Gostei + 0
02/07/2005
Beppe
O método que vc deve dar override é DblClick. OnDblClick é evento e não se pode dar override neles.
Outra, vc só chamará ´inherited ...;´ se quiser tbm o comportamento antigo. Vc disse que quer substituir, então deixa inherited de fora.
protected procedure DblClick; override; ... procedure TMyButton.DblClick; begin // end;
Gostei + 0
02/07/2005
Bruno Belchior
procedure herdada; reintroduce;
Gostei + 0
02/07/2005
Michael
Se vc se referiu ao comportamento do IDE do Delphi que gera o código para o evento OnClick ao se dar um duplo clique sobre o botão, então para mudar isso vc deve usar um editor de componente ou então fazer com que seu evento seja o primeiro a ser listado no Object Inspector.
[]´s
Gostei + 0
03/07/2005
Beppe
Outro detalhe causa bem mais dor de cabeça, com reintroduce:
type TClasseA = class public procedure MetodoA; virtual; end; TClasseB = class(TClasseA) public procedure MetodoA; reintroduce; end; ... TClasseA(ObjetoDaClasseB).MetodoA; ...
O método chamado será sempre o da TClasseA. O reintroduce faz com que o Delphi crie um ´entidade´ para cada método, que apenas acontece de terem o mesmo nome.
Gostei + 0
04/07/2005
Rodc
Ola Michael, vc entendeu perfeitamente o que quero fazer. Quero que no desenvolvimento a IDE do Delphi implemente automaticamente o meu evento quando o usuário dar duplo clique no componente. Mas ele chama sempre o evento OnClick.
Eu já tentei deixar o meu evento como o primeiro da lista, mas não adianta... é como o OnCreate que é chamado sempre que dou um duplo clique no form. O OnCreate não é o primeiro da lista de eventos...
Já procurei nos códigos do componente até chegar na classe mais baixa e não encontrei algo que possa estar relacionado...
Alguém tem uma idéia de como fazer isto?
Grato,
Rodrigo Cesar
Gostei + 0
04/07/2005
Cabelo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)