Fórum Identificar componente em tempo de execução #254676
15/10/2004
0
Num programa onde os componentes são criados em tempo de execução, como faço para saber em qual componente estou clicando?
Por exemplo:
Supondo que o usuário executou o programa e tenha criado três botões do tipo TButton. Eu quero que, quando o usuário clicar sobre um destes três botões, seja emitida uma mensagem informando o nome do botão clicado.
Tem como fazer isso?
wbb
Wbb
Curtir tópico
+ 0Posts
15/10/2004
Fórum Vini
tem sim, você pode usar um código mais ou menos assim:
procedure TForm1.CliqueDosTresBotoes(Sender: TObject); begin Showmessage( (Sender as TComponent).Name ); end; procedure TForm1.FormCreate(Sender: TObject); begin Button1.OnClick:= CliqueDosTresBotoes; Button2.OnClick:= CliqueDosTresBotoes; Button3.OnClick:= CliqueDosTresBotoes; end;
Espero ter ajudado,
Vinicius;
Gostei + 0
16/10/2004
Wbb
Entendi o que vc disse, mas não é bem isso.
Isso que você sugeriu não tem como ser feito em tempo de execução do programa, tal como eu preciso. Tudo que estou fazendo é em tempo de execução: a criação dos componentes, a emissão das mensagens ao clicar, etc... Da forma que vc indicou eu teria que escrever o código antes de rodar o programa.
Valeu!
wbb
Gostei + 0
17/10/2004
Fórum Vini
Tem sim! :D
var cont: Integer; begin for cont:= 0 to ComponentCount - 1 do if ( Components[i] is TButton ) then (Components[i] as TButton).OnClick:= CliqueDosTresBotoes; end;
Lembrando que para que esse código funcione o formulário tem que ser o proprietário(owner) dos componentes TButton;
Espero ter ajudado,
Vinicius;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)