Na verdade não seria atribuição de instruções a eventos, mas atribuições de métodos a eventos. Isso é simples de se fazer. Basta que o método possua uma assinatura igual a que é requerida pelo evento. Por exemplo, o evento OnClick de um botão é definido como um ponteiro para um método de um objeto que deve possuir como parâmetro um elemento do tipo TObject, conforme é definido no help da seguinte maneira:
type TNotifyEvent = procedure (Sender: TObject) of object; (Fonte: help do Delphi) Sabendo disto, você só pode atribuir diretamente a um evento um método de objeto que tenha a mesma assinatura requerida pelo evento. Não se pode simplesmente atribuir um ShowMessage(). Mesmo com a possibilidade existente na linguagem Delphi do RAD Studio 2010 de permitir atribuição anônima de eventos, os mesmos devem obedecer a assinatura do evento. Portanto, colega Eric, você tem que criar um método de objeto com a assinatura do evento para que o mesmo possa ser atribuído diretamente a ele. Exemplo: { Método criado com assinatura requerida pelo evento OnClick } procedure <ObjetoQualquer>.MostraMensagem(Sender: TObject); begin ShowMessage(Evento atribuído em run-time); end; procedure MeuBotao(UmForm: TForm); begin with TButton.Create(UmForm) do begin Parent := UmForm; Width := 60; Left := 10; Top := oFrm.Height - oBtn.Height - 40; Caption := 'Close'; OnClick := <ObjetoQualquer>.MostraMensagem; end; end; Sds. De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Anderson Junior Enviada em: domingo, 11 de julho de 2010 20:22 Para: delphi-br@yahoogrupos.com.br; memsystems-pas...@yahoo.com Assunto: Re: [delphi-br] Como atribuir instruções a eventos em tempo de execução ? boa noite, vc conegui resolver seu problema com "Como atribuir instruções a eventos em tempo de execução ?" Em 19/01/2010 02:48, developer.systems escreveu: > > Boa noite a todos ! > > Tenho uma função que cria o botão tem tempo de execução, mas como > atribuir em tempo de execução, uma função/procedure ao evento onClick ? > > procedure MeuBotao( oFrm: TForm ) ; > var oBtn: TButton ; > > begin > oBtn:=TButton.Create(oFrm); > oBtn.Parent:=oFrm; > oBtn.Width:=60; > oBtn.Left:=10; > oBtn.Top:=oFrm.Height-oBtn.Height-40; > oBtn.Caption:='Close'; > //oBtn.onClick ???? Neste evento, atribuir por exemplo: ShowMessage( > 'MyButton RunTime and onClick' ) ; > > end; > > Virtualmente/Regards > Eric > Developer.Systems > São Paulo - Brasil > > > [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]