Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way in Delphi to assign an anonymous method to a button event?

I was wondering if there is a way in Delphi to assign an anonymous method to a form control event.

For example:

Button1.OnClick := procedure (Sender: TObject) begin ShowMessage('') end;

Of course this gives me an error

[dcc32 Error] Control.Controller.pas(51): E2009 Incompatible types: 'method pointer and regular procedure'

This is because the method must belong to an object, but then it would not be anonymous any more.

Perhaps there is some work around for this

like image 496
sav Avatar asked Aug 26 '14 07:08

sav


1 Answers

This is not possible. You have to make the event handler be a method type rather than an anonymous method.

You'll need to wrap your anonymous method in a method. Either an instance method (of a record or a class), or a class method. For instance:

  • VCL events with anonymous methods - what do you think about this implementation?
  • TProc<TObject> to TNotifyEvent
like image 102
David Heffernan Avatar answered Oct 07 '22 02:10

David Heffernan