Fórum Como obter dados de um objeto #335652
04/01/2007
0
Gostaria de atribuir um evento em a formulário, e que esse evento seja herdado automaticamente por todos os objetos contidos nele, ou seja, digamos que esse evento exiba uma mensagem na tela [b:34f8fd208f]´Olá!´[/b:34f8fd208f] ao clicar em um determinado objeto. Quero que esse evento seja exibido toda vez que algum objeto for clicado. Tudo isso, sem códigos adicionais!
Bem, talvez o problema acima não seja tao dificil de resolver, não é mesmo? Para isso, basta criar o evento em um [b:34f8fd208f]PopupMenu[/b:34f8fd208f] e indicá-lo nas propriedades dos demais objetos do formulário, certo? Certo!!! (Caso tenha uma solução mais viavel, favor indica-la)
Agora vamos para o real problema! Na verdade, o que realmente preciso é saber qual objeto foi clicado pelo usuário, para que no evento apareça [b:34f8fd208f]´Olá <nomeDoObjeto>!´[/b:34f8fd208f]. Alguem pode me ajudar, como passar como parametro em tempo de execução o [b:34f8fd208f]Sender [/b:34f8fd208f]do objeto clicado pelo usuario?
Marcelo
Curtir tópico
+ 0Posts
04/01/2007
Adrbrusc
procedure TForm1. AllEventsClick(Sender : TObject ); begin end;
E em cada botão da sua aplicação eu atribuiria no evento OnClick a procedure AllEventsClick; Mas veja que você deveria programar dentro da procedure AllEventsClcik o procedimento do clique de cada botão. Assim >>
procedure TForm1. AllEventsClick(Sender : TObject ); begin if TComponent(Sender).Name = ´Button1´ then //colocar os procedimentos do button1 showmessage( TComponent(Sender).Name ) else if TComponent(Sender).Name = ´Button2´ then //colocar os procedimentos do button2 showmessage( TComponent(Sender).Name ); end;
Ai nos eventos Click dos seus botões vc atribui o seguinte código>>
procedure TForm1.Button2Click(Sender: TObject); begin AllEventsClick(Sender); end; //Há duas maneiras de atribuir o evento AllEventsClicks aos seus botões: //Só colocar no evento (object Inspector) OnClick do Button3, Button4.... //Button2Click; //ou atribuir no código mesmo como feito no Button2 procedure TForm1.Button3Click(Sender: TObject); begin AllEventsClick(Sender); end;
Espero que o código acima resolva o que você está querendo, pois coloquei de uma forma com que você saiba na sua procedure AllEventsClick quem foi o componente que a chamou.
Abraços
Gostei + 0
04/01/2007
Marcelo
Primeiramente gostaria de agradecer pela atenção.
Olha, é justamente isso que não quero fazer... colocar vários eventos no formulário. Gostaria que tudo funcionasse de forma dinâmica e genérica (independente de componentes). Já havia criado um evento que segue:
{*** Modo de utilizar o método ***}
// mostraNomeObj( Sender );
procedure TformTeste.mostraNomeObj(comp: TObject );
begin
ShowMessage( TComponent( comp ).Owner.Name + ´.´ + TComponent( comp ).Name );
end;Alguém pode me ajudar?
Gostei + 0
04/01/2007
Adrbrusc
Abraços
{*** Modo de utilizar o método ***}
// mostraNomeObj( Sender );
procedure TformTeste.mostraNomeObj(comp: TObject );
begin
ShowMessage( TComponent( comp ).Owner.Name + ´.´ + TComponent( comp ).Name );
end;Gostei + 0
04/01/2007
Marcelo
Certamente há como fazer isso, da mesma forma que disponibilizamos o ShowHint em toda a aplicação, por que não disponibilizar também um evento, como o de um click com o botão direito que ao ser acionado, recebe as informações do objeto!
Alguém pode me ajudar?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)