Identificar componente em tempo de execução
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
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
Curtidas 0
Respostas
Fórum Vini
15/10/2004
Olá,
tem sim, você pode usar um código mais ou menos assim:
Espero ter ajudado,
Vinicius;
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
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
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
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