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]

Responder a