Qual é a forma mais correta de executar o Onclick

31/08/2005

0

olá pessoal

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

Diogoalles

Responder

Post mais votado

31/08/2005

Olá amigo concordo com o que foi dito pelo colegas [b:bb37640a5c]Rjun e Massuda[/b:bb37640a5c], tb não gosto de codificar assim, mas em seu caso, já q vc quer assim, veja só.

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

Martins
Responder

Mais Posts

31/08/2005

Rjun

Deve-se evitar colocar código dentro de eventos. Dessa forma, no evento você apenas faria a chamada para algum método. Então, em vez de chamar o OnClick, chame o método que você criou.


Responder

31/08/2005

Arc

procedure TFrm1.DBGridDblClick(Sender: TObject);
begin
[b:74eade3658]BtnAlterarClick(Sender); [/b:74eade3658]
end;


ou no evento OnDblClick do grid selecione o BtnAlterarClick


Responder

31/08/2005

Diogoalles

Blz pessoal

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


Responder

31/08/2005

Massuda

Também poderiam me explicar melhor o que significa o ´Sender´ ?
Num (tratador de) evento, o parâmetro Sender contem a referência ao objeto que gerou o evento. Note que o valor de Sender pode ser nil.

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).


Responder

31/08/2005

Rômulo Barros

A forma mais correta, [i:a77eaf6a0f]que eu acho[/i:a77eaf6a0f], é através da utilização do componente ActionList.
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:


Responder

31/08/2005

Diogoalles

Certo pessoal, obrigado pela atenção de todos.

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


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar