Qual é a forma mais correta de executar o Onclick
31/08/2005
0
gostaria de saber qual é a forma mais correta de executar o Onclick ou qualquer outro evento de determinados controles, atraves de outros controles:
ou seja
tenho um form que tem um DBGRID e um BtnAlterar, gostaria que no DbGrid.OnDblClick ele executasse o que está no BtnAlterar.
vi em alguns sistema e fontes que para fazer isso é usado por exemplo
procedure TFrm1.DBGridDblClick(Sender: TObject); begin BtnAlterar.OnClick(Sender); end;
Só que usando ´sender´ em alguns forms dá erro e nem compila: [color=red:c60e427d1a]´Undeclared Identifier: Sender´[/color:c60e427d1a]. Em outros forms funciona normal. Já comparei as declarações das Uses e ambos os forms são iguais.
Atualmente eu utilizo da seguinte forma:
procedure TFrm1.DBGridDblClick(Sender: TObject); begin BtnAlterar.OnClick(BtnAlterar); end;
.. essa acima funciona em todos os casos.
Gostaria de saber qual a mais correta e pq a do ´sender´ dá erro?
abraço
Diogo
Diogoalles
Post mais votado
31/08/2005
Esse é seu código:
procedure TFrm1.DBGridDblClick(Sender: TObject); begin BtnAlterar.OnClick(Sender); end;
Mude-o para
procedure TFrm1.DBGridDblClick(Sender: TObject); begin BtnAlterar.Click; //Simula o clique no BtnAlterar OK! end;
Espero q possa te ajudar.
Martins
Martins
Mais Posts
31/08/2005
Rjun
31/08/2005
Arc
begin
[b:74eade3658]BtnAlterarClick(Sender); [/b:74eade3658]
end;
ou no evento OnDblClick do grid selecione o BtnAlterarClick
31/08/2005
Diogoalles
Arc, utilizando da maneira que vc disse ´BtnAlterarClick(Sender);´ continua a dar o mesmo erro em alguns forms.
Também poderiam me explicar melhor o que significa o ´Sender´ ?
abraço
Diogo
31/08/2005
Massuda
Com relação ao erro que você está encontrando... Talvez você esteja confundindo Sender com Self. Sender é um parâmetro que você recebe no código, logo você só pode utilizá-lo quando recebê-lo.
Pessoalmente não gosto de código que chama diretamente o (tratador de) evento, acho que é um estilo de codificar muito preso à interface que está usando, geralmente qualquer pequena mudança na interface resulta num monte de código que precisa ser alterado.
Imaginando que não tem outro jeito, saiba que alguns eventos de um componente (por exemplo, OnClick) podem ser gerados a partir de métodos do componente (no caso do OnClick, o método é Click).
31/08/2005
Rômulo Barros
Adicione uma Action ao seu componente ActionList e defina a [b:a77eaf6a0f]codificação [/b:a77eaf6a0f]no evento OnExecute da sua Action Adicionada.
Após isso, selecione o seu botão e , no evento onclick, abra o combobox e aponte para sua Action. Já no seu dbgrid, abra o combobox do evento OnDbClick e aponte também para sua action adicionada.
Pronto, tanto o OnClick do botão quanto o DbClick do seu dbgrid apontarão para o mesmo código ( Código definido no evento OnExecute da Action setada para os componentes )
:wink:
31/08/2005
Diogoalles
Eu realmente vou ter que utilizar e não é só pra eventos de OnClick. Todo meu sistema tem referencias para eventos de diversos componentes e recém agora resolvi me deter a esta questão de o porque que é feito assim.
obrigado mesmo e se alguem tiver mais algo a acrescentar esteja a vontade!
Diogo
Clique aqui para fazer login e interagir na Comunidade :)