Identificar componente em tempo de execução

Delphi

15/10/2004

Olá!

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

Wbb

Curtidas 0

Respostas

Fórum Vini

Fórum Vini

15/10/2004

Olá,
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
Wbb

Wbb

15/10/2004

ola Vini!

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
Fórum Vini

Fórum Vini

15/10/2004

Isso que você sugeriu não tem como ser feito em tempo de execução do programa, tal como eu preciso.

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
POSTAR